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
80 CoppInverseDynamicsFn inverse_dynamics,
81 void *inverse_dynamics_user_data);
82
93
105
119 struct CoppSliceF64 amax,
120 size_t idx_s);
121
129enum CoppStatus copp_robot_dim(const struct CoppRobot *robot, size_t *out_dim);
130
138enum CoppStatus copp_robot_len(const struct CoppRobot *robot, size_t *out_len);
139
147enum CoppStatus copp_robot_capacity(const struct CoppRobot *robot, size_t *out_capacity);
148
156enum CoppStatus copp_robot_is_empty(const struct CoppRobot *robot, bool *out_is_empty);
157
167enum CoppStatus copp_robot_idx_s_start(const struct CoppRobot *robot, size_t *out_idx_s_start);
168
178enum CoppStatus copp_robot_idx_s_end(const struct CoppRobot *robot, size_t *out_idx_s_end);
179
188 size_t *out_amax_rows,
189 size_t *out_acc_rows,
190 size_t *out_jerk_rows);
191
199enum CoppStatus copp_robot_get_s(const struct CoppRobot *robot, size_t idx_s, double *out_s);
200
208enum CoppStatus copp_robot_get_amax(const struct CoppRobot *robot, size_t idx_s, double *out_amax);
209
220enum CoppStatus copp_robot_s_vec(const struct CoppRobot *robot,
221 size_t idx_s_from,
222 size_t idx_s_to,
223 struct CoppVecF64 *out_s);
224
235enum CoppStatus copp_robot_amax_vec(const struct CoppRobot *robot,
236 size_t idx_s_from,
237 size_t idx_s_to,
238 struct CoppVecF64 *out_amax);
239
251 size_t idx_s,
252 struct CoppMatrixF64 *out_acc_a,
253 struct CoppMatrixF64 *out_acc_b,
254 struct CoppMatrixF64 *out_acc_max);
255
267 size_t idx_s,
268 struct CoppMatrixF64 *out_jerk_a,
269 struct CoppMatrixF64 *out_jerk_b,
270 struct CoppMatrixF64 *out_jerk_c,
271 struct CoppMatrixF64 *out_jerk_d,
272 struct CoppMatrixF64 *out_jerk_max);
273
287 size_t idx_s,
288 struct CoppMatrixF64 *out_jerk_a_linear,
289 struct CoppMatrixF64 *out_jerk_b,
290 struct CoppMatrixF64 *out_jerk_c,
291 struct CoppMatrixF64 *out_jerk_max_linear);
292
302enum CoppStatus copp_robot_clear_constraints(struct CoppRobot *robot, bool keep_idx_s);
303
310enum CoppStatus copp_robot_pop_front_n(struct CoppRobot *robot, size_t n_cols);
311
318enum CoppStatus copp_robot_pop_back_n(struct CoppRobot *robot, size_t n_cols);
319
326enum CoppStatus copp_robot_pop_front_until(struct CoppRobot *robot, size_t idx_s_cut);
327
334enum CoppStatus copp_robot_pop_back_until(struct CoppRobot *robot, size_t idx_s_cut);
335
347 const struct CoppPath *path,
348 size_t idx_s_from,
349 size_t idx_s_to);
350
362 const struct CoppPath *path,
363 size_t idx_s_from,
364 size_t idx_s_to);
365
383 size_t idx_s,
384 struct CoppMatrixViewF64 q,
385 struct CoppMatrixViewF64 dq,
386 struct CoppMatrixViewF64 ddq);
387
401 size_t idx_s,
402 struct CoppMatrixViewF64 q,
403 struct CoppMatrixViewF64 dq,
404 struct CoppMatrixViewF64 ddq,
405 struct CoppMatrixViewF64 dddq);
406
423 size_t idx_s,
424 struct CoppMatrixViewF64 amax);
425
442 size_t idx_s,
443 struct CoppMatrixViewF64 acc_a,
444 struct CoppMatrixViewF64 acc_b,
445 struct CoppMatrixViewF64 acc_max);
446
463 size_t idx_s,
464 struct CoppMatrixViewF64 jerk_a,
465 struct CoppMatrixViewF64 jerk_b,
466 struct CoppMatrixViewF64 jerk_c,
467 struct CoppMatrixViewF64 jerk_d,
468 struct CoppMatrixViewF64 jerk_max);
469
482 size_t start_idx_s,
483 size_t len,
484 struct CoppSliceF64 velocity_max,
485 struct CoppSliceF64 velocity_min);
486
502 size_t start_idx_s,
503 struct CoppMatrixViewF64 velocity_max,
504 struct CoppMatrixViewF64 velocity_min);
505
518 size_t start_idx_s,
519 size_t len,
520 struct CoppSliceF64 acceleration_max,
521 struct CoppSliceF64 acceleration_min);
522
538 size_t start_idx_s,
539 struct CoppMatrixViewF64 acceleration_max,
540 struct CoppMatrixViewF64 acceleration_min);
541
563 size_t start_idx_s,
564 size_t len,
565 struct CoppSliceF64 torque_max,
566 struct CoppSliceF64 torque_min);
567
591 size_t start_idx_s,
592 struct CoppMatrixViewF64 torque_max,
593 struct CoppMatrixViewF64 torque_min);
594
611 size_t start_idx_s,
612 size_t len,
613 struct CoppSliceF64 jerk_max,
614 struct CoppSliceF64 jerk_min);
615
635 size_t start_idx_s,
636 struct CoppMatrixViewF64 jerk_max,
637 struct CoppMatrixViewF64 jerk_min);
638
648void copp_robot_free(struct CoppRobot *robot);
649
651
652#ifdef __cplusplus
653}
654#endif
655
656#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:785
Borrowed immutable f64 matrix passed from C to COPP.
Definition core.h:647
Borrowed immutable f64 slice passed from C to COPP.
Definition core.h:708
Library-owned f64 vector returned to C.
Definition core.h:743