Robot handles, path sampling, derivative input, constraints, and limits. More...
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. | |
Robot handles, path sampling, derivative input, constraints, and limits.