COPP C ABI
C interface for COPP trajectory optimization
Loading...
Searching...
No Matches
robot.h File Reference

Robot handles, path sampling, derivative input, constraints, and limits. More...

#include <stddef.h>
#include "copp/core.h"
#include "copp/path.h"

Go to the source code of this file.

Typedefs

typedef struct CoppRobot CoppRobot
 Opaque C handle for a library-owned robot and constraint buffer.
typedef 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.

Functions

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_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_clear_inverse_dynamics (struct CoppRobot *robot)
 Clear the inverse-dynamics callback stored in a robot handle.
enum CoppStatus copp_robot_append_s (struct CoppRobot *robot, struct CoppSliceF64 s)
 Append strictly increasing station samples to a robot.
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_dim (const struct CoppRobot *robot, size_t *out_dim)
 Return the robot/path dimension stored in a robot handle.
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_capacity (const struct CoppRobot *robot, size_t *out_capacity)
 Return the allocated station capacity of the robot constraint buffer.
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_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_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_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_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 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_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).
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_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_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_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_robot_clear_constraints (struct CoppRobot *robot, bool keep_idx_s)
 Clear all logical constraints stored in the robot.
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_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_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_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_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_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_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_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_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_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.
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_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_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_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_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_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_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_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.
void copp_robot_free (struct CoppRobot *robot)
 Release a robot handle created by copp_robot_create.

Detailed Description

Robot handles, path sampling, derivative input, constraints, and limits.