13 #define M_PI 3.14159265358979323846 826 HebiLookupPtr
hebiLookupCreate(
const char*
const* ifaces,
size_t ifaces_length);
1009 const char*
const* names,
size_t num_names, int32_t timeout_ms);
1077 int32_t timeout_ms);
1108 int32_t timeout_ms);
1595 void hebiCommandSetString(HebiCommandPtr command, HebiCommandStringField field,
const char* buffer,
1596 const size_t* length);
1702 size_t num_outputs,
const double* outputs,
1703 HebiMatrixOrdering ordering);
1732 const double* com,
const double* inertia,
1733 double mass,
const double* output_frame,
1734 HebiMatrixOrdering ordering);
1781 HebiLinkOutputType output_type,
double extension,
1890 HebiMatrixOrdering ordering);
1905 HebiMatrixOrdering ordering);
1995 size_t output_index, HebiRobotModelElementPtr new_element);
2033 const double* positions,
double* frames, HebiMatrixOrdering ordering);
2053 const double* positions,
double* jacobians, HebiMatrixOrdering ordering);
2127 double y,
double z);
2148 const double* matrix, HebiMatrixOrdering ordering);
2169 double y,
double z);
2191 const double* min_positions,
const double* max_positions);
2216 void (*err_fnc)(
void* user_data,
size_t num_positions,
const double* positions,
2289 const double* velocities,
const double* accelerations,
2290 const double* time_vector);
2320 double* acceleration);
Ambient temperature inside the module (measured at the IMU chip)
The name for this module. The string must be null-terminated and less than 21 characters.
HebiFeedbackQuaternionfField
Integral PID gain for position.
struct HebiFeedback_ * HebiFeedbackPtr
The C-style's API representation of feedback.
void hebiStringRelease(HebiStringPtr str)
Releases a string instance.
Timestamp of when message was received from module (local)
HebiLogFilePtr hebiLogFileOpen(const char *file)
Opens an existing log file.
HebiStatusCode hebiRobotModelGetForwardKinematics(HebiRobotModelPtr robot_model, HebiFrameType frame_type, const double *positions, double *frames, HebiMatrixOrdering ordering)
Generates the transforms for the forward kinematics of the given robot model.
void hebiFeedbackGetMetadata(HebiFeedbackMetadata *metadata)
Returned when an accessor function attempts to retrieve a field which is not set. ...
HebiStatusCode hebiIKAddObjectiveEndEffectorTipAxis(HebiIKPtr ik, double weight, size_t end_effector_index, double x, double y, double z)
Add an objective that points the end effector's z axis in a given direction. Note that this is incomp...
HebiStatusCode hebiRobotModelGetJacobians(HebiRobotModelPtr robot_model, HebiFrameType frame_type, const double *positions, double *jacobians, HebiMatrixOrdering ordering)
Generates the jacobian for each frame in the given kinematic tree.
HebiStatusCode hebiCommandGetString(HebiCommandPtr command, HebiCommandStringField field, char *buffer, size_t *length)
Command API.
HebiTrajectoryPtr hebiTrajectoryCreateUnconstrainedQp(size_t num_waypoints, const double *positions, const double *velocities, const double *accelerations, const double *time_vector)
Trajectory API.
HebiLogFilePtr hebiGroupStopLog(HebiGroupPtr group)
Stops logging data to a file.
The spring constant of the module.
struct HebiFeedbackMetadata_ HebiFeedbackMetadata
HebiStatusCode hebiIKAddObjectiveEndEffectorSO3(HebiIKPtr ik, double weight, size_t end_effector_index, const double *matrix, HebiMatrixOrdering ordering)
Add an objective that optimizes for the end effector output frame orientation to be given by the 3x3 ...
void hebiIKRelease(HebiIKPtr ik)
Frees resources created by this inverse kinematics object.
Error values within +/- this value from zero are treated as zero (in terms of computed proportional o...
HebiIoBankPinResidentType
Derivative PID gain for velocity.
HebiStatusCode hebiLogFileGetFileName(HebiLogFilePtr log_file, char *buffer, size_t *length)
Copy the path and name of the log file into a buffer.
void hebiInfoGetReference(HebiInfoPtr info, HebiInfoRef *ref)
HebiGroupPtr hebiGroupCreateConnectedFromMac(HebiLookupPtr lookup, const HebiMacAddress *address, int32_t timeout_ms)
Create a group with all modules connected to module with the given MAC address.
HebiStatusCode hebiGroupSendCommand(HebiGroupPtr group, HebiGroupCommandPtr command)
Sends a command to the given group without requesting an acknowledgement.
HebiCommandHighResAngleField
const float * numbered_float_fields_
Boot the module from bootloader into application.
size_t hebiGroupFeedbackGetSize(HebiGroupFeedbackPtr feedback)
Return the number of modules in this group Feedback.
const int32_t * enum_fields_
Difference between the pre-spring and post-spring output position.
HebiFeedbackVector3fField
The AR session has not yet gathered enough camera or motion data to provide tracking information...
A simple lowpass filter applied to the controller output; needs to be between 0 and 1...
struct HebiGroupInfo_ * HebiGroupInfoPtr
The C-style's API representation of a info object for a group of modules.
Feed forward term for effort (this term is multiplied by the target and added to the output)...
struct HebiCommandRef_ HebiCommandRef
Output from the PID controller is limited to a maximum of this value.
HebiStatusCode hebiGroupInfoCopy(HebiGroupInfoPtr dest, HebiGroupInfoPtr src)
Clears the dest GroupInfo object, and copies all data from the src GroupInfo object to dest...
The firmware safety limit for the minimum allowed position.
Charge level of the device’s battery (in percent).
A buffer supplied to the routine was too small (normally determined by a size parameter) ...
The firmware safety limit for the minimum allowed effort.
HebiStatusCode hebiGroupStartLog(HebiGroupPtr group, const char *dir, const char *file, HebiStringPtr *ret)
Starts logging data to a file.
HebiStatusCode hebiGroupCommandReadGains(HebiGroupCommandPtr command, const char *file)
Import gains from a file into a GroupCommand object.
Software-controlled bounds on the allowable position of the module; user settable.
Output from the PID controller is limited to a minimum of this value.
struct HebiCommand_ * HebiCommandPtr
Typedefs.
A simple lowpass filter applied to the controller output; needs to be between 0 and 1...
HebiRobotModelElementPtr hebiRobotModelElementCreateJoint(HebiJointType joint_type)
RobotModel API.
HebiStatusCode hebiRobotModelGetMasses(HebiRobotModelPtr robot_model, double *masses)
Fill in the masses vector with the mass of each body with mass in the kinematic tree, reported in a depth-first ordering.
Integral PID gain for position.
Current status of the MStop.
HebiFeedbackHighResAngleField
HebiGroupFeedbackPtr hebiGroupFeedbackCreate(size_t size)
Creates a GroupFeedback for a group with the specified number of modules.
HebiRobotModelPtr hebiRobotModelCreate(void)
Creates an object to hold a robot model (tree topology). This structure has a single output available...
A simple lowpass filter applied to the target set point; needs to be between 0 and 1...
void hebiCommandSetString(HebiCommandPtr command, HebiCommandStringField field, const char *buffer, const size_t *length)
void hebiGroupInfoClear(HebiGroupInfoPtr info)
Clears all data in the GroupInfo object.
HebiStatusCode hebiRobotModelGetElementMetadata(HebiRobotModelPtr model, size_t index, HebiRobotModelElementMetadata *output)
Retrieves metadata about an element in the robot model. This metadata includes what type of element t...
A simple lowpass filter applied to the controller output; needs to be between 0 and 1...
Software-controlled bounds on the allowable velocity of the module.
HebiRobotModelElementPtr hebiRobotModelElementCreateActuator(HebiActuatorType actuator_type)
Creates a robot model element corresponding to a standard HEBI actuator.
Derivative PID gain for effort.
void hebiCommandGetMetadata(HebiCommandMetadata *metadata)
const bool * bool_fields_
The firmware safety limit for the minimum allowed velocity.
HebiFeedbackNumberedFloatField
Output from the PID controller is limited to a maximum of this value.
Feed forward term for position (this term is multiplied by the target and added to the output)...
Feed forward term for velocity (this term is multiplied by the target and added to the output)...
struct HebiInfoMetadata_ HebiInfoMetadata
void hebiGroupRelease(HebiGroupPtr group)
Release resources for a given group; group should not be used after this call.
The velocity of the motor shaft.
I/O pin bank b (pins 1-8 available)
HebiFrameType
RobotModel Enums.
const float * float_fields_
Constant offset to the effort PID output outside of the deadzone; it is added when the error is posit...
Proportional PID gain for position.
Output from the PID controller is limited to a minimum of this value.
const char * hebiRobotModelGetImportError()
Retrieve any error string from the last call to hebiRobotModelImport. This must be called on the same...
size_t hebiGroupCommandGetSize(HebiGroupCommandPtr command)
Return the number of modules in this group Command.
Minimum allowed value for input to the PID controller.
Maximum allowed value for the output of the integral component of the PID loop; the integrated error ...
The family for this module. The string must be null-terminated and less than 21 characters.
Maximum allowed value for the output of the integral component of the PID loop; the integrated error ...
size_t hebiGroupInfoGetSize(HebiGroupInfoPtr info)
Return the number of modules in this group Info.
const HebiQuaternionf * quaternionf_fields_
A simple lowpass filter applied to the target set point; needs to be between 0 and 1...
struct HebiMacAddress_ HebiMacAddress
Structures.
HebiFeedbackFloatField
Feedback Enums.
The firmware safety limit for the maximum allowed velocity.
HebiLookupPtr hebiLookupCreate(const char *const *ifaces, size_t ifaces_length)
Lookup API.
HebiStatusCode hebiGroupCommandCopy(HebiGroupCommandPtr dest, HebiGroupCommandPtr src)
Clears the dest GroupCommand object, and copies all data from the src GroupCommand object to dest...
HebiStatusCode hebiLookupEntryListGetName(HebiLookupEntryListPtr lookup_list, size_t index, char *buffer, size_t *length)
struct HebiFeedbackRef_ HebiFeedbackRef
The firmware safety limit for the minimum allowed position.
Output from the PID controller is limited to a maximum of this value.
Stop the module from automatically booting into application.
Output from the PID controller is limited to a maximum of this value.
Sequence number going to module (local)
struct HebiVector3f_ HebiVector3f
HebiStatusCode hebiTrajectoryGetState(HebiTrajectoryPtr trajectory, double time, double *position, double *velocity, double *acceleration)
Gets the value of the trajectory at a given time.
int32_t end_effector_index_
The calibration state of the module.
HebiStatusCode hebiIKAddObjectiveCustom(HebiIKPtr ik, double weight, size_t num_errors, void(*err_fnc)(void *user_data, size_t num_positions, const double *positions, double *errors), void *user_data)
Add a custom objective function to be minimized by the IK solver.
The position limit strategy (at the minimum position) for the actuator.
struct HebiString_ * HebiStringPtr
The C-style's API representation of a string.
Derivative PID gain for velocity.
HebiStatusCode hebiGroupCommandReadSafetyParameters(HebiGroupCommandPtr command, const char *file)
Import safety parameters from a file into a GroupCommand object.
Generic code for failure; this is generally used for an internal or unknown failure.
int32_t * message_bitfield_
Minimum allowed value for input to the PID controller.
Proportional PID gain for velocity.
uint64_t * uint64_fields_
I/O pin bank e (pins 1-8 available)
HebiIoBankPinStruct * io_fields_
Derivative PID gain for position.
void hebiFeedbackGetReference(HebiFeedbackPtr feedback, HebiFeedbackRef *ref)
Feedback API.
void hebiGroupFeedbackRelease(HebiGroupFeedbackPtr feedback)
Frees resources created by the GroupFeedback object.
struct HebiInfo_ * HebiInfoPtr
The C-style's API representation of info.
struct HebiGroupCommand_ * HebiGroupCommandPtr
The C-style's API representation of a command object for a group of modules.
HebiStatusCode hebiGroupSetFeedbackFrequencyHz(HebiGroupPtr group, float frequency)
Sets the feedback request loop frequency (in Hz).
HebiHighResAngleStruct * high_res_angle_fields_
Output from the PID controller is limited to a minimum of this value.
size_t hebiRobotModelGetNumberOfDoFs(HebiRobotModelPtr robot_model)
Returns the number of settable degrees of freedom in the kinematic tree. (This is equal to the number...
float hebiGroupGetFeedbackFrequencyHz(HebiGroupPtr group)
Returns the current feedback request loop frequency (in Hz).
HebiGroupCommandPtr hebiGroupCommandCreate(size_t size)
Creates a GroupCommand for a group with the specified number of modules.
void hebiInfoGetMetadata(HebiInfoMetadata *metadata)
Velocity of the module output (post-spring).
struct HebiHighResAngleStruct_ HebiHighResAngleStruct
struct HebiRobotModel_ * HebiRobotModelPtr
Effort at the module output; units vary (e.g., N * m for rotational joints and N for linear stages)...
void hebiGroupCommandClear(HebiGroupCommandPtr command)
Clears all data in the GroupCommand object.
HebiStatusCode hebiGroupRequestInfo(HebiGroupPtr group, HebiGroupInfoPtr info, int32_t timeout_ms)
Requests info from the group, and writes it to the provided info object.
Proportional PID gain for effort.
HebiGroupPtr hebiGroupCreateConnectedFromName(HebiLookupPtr lookup, const char *family, const char *name, int32_t timeout_ms)
Create a group with all modules connected to module with the given name and family.
I/O pin bank b (pins 1-8 available)
size_t hebiLookupEntryListGetSize(HebiLookupEntryListPtr lookup_list)
const int32_t * message_bitfield_
Constant offset to the velocity PID output outside of the deadzone; it is added when the error is pos...
The state of the command lifetime safety controller, with respect to the current group.
const int32_t * message_bitfield_
void hebiRobotModelElementRelease(HebiRobotModelElementPtr element)
Frees resources created by this element.
Integral PID gain for effort.
Derivative PID gain for position.
Bus voltage at which the module is running.
Proportional PID gain for velocity.
HebiStatusCode hebiGroupSetCommandLifetime(HebiGroupPtr group, int32_t lifetime_ms)
Sets the command lifetime for the group, in milliseconds.
The family for this module. The string must be null-terminated and less than 21 characters.
HebiCommandPtr hebiGroupCommandGetModuleCommand(HebiGroupCommandPtr command, size_t module_index)
Get an individual command for a particular module at index module_index.
HebiInfoHighResAngleField
const float * float_fields_
HebiGroupPtr hebiGroupCreateFromNames(HebiLookupPtr lookup, const char *const *families, size_t num_families, const char *const *names, size_t num_names, int32_t timeout_ms)
Create a group with modules matching the given names and families.
double hebiTrajectoryGetDuration(HebiTrajectoryPtr trajectory)
Returns the length of this trajectory (in seconds).
Commanded position of the module output (post-spring).
void hebiTrajectoryRelease(HebiTrajectoryPtr trajectory)
Frees resources created by this trajectory.
struct HebiInfoRef_ HebiInfoRef
HebiStatusCode hebiGroupSendFeedbackRequest(HebiGroupPtr group)
Requests feedback from the group.
const int32_t * enum_fields_
HebiLookupEntryListPtr hebiCreateLookupEntryList(HebiLookupPtr lookup)
Return a snapshot of the contents of the module registry – i.e., which modules have been found by th...
Constant offset to the effort PID output outside of the deadzone; it is added when the error is posit...
Minimum allowed value for input to the PID controller.
void hebiGroupInfoRelease(HebiGroupInfoPtr info)
Frees resources created by the GroupInfo object.
Minimum allowed value for input to the PID controller.
HebiStatusCode hebiGroupSendCommandWithAcknowledgement(HebiGroupPtr group, HebiGroupCommandPtr command, int32_t timeout_ms)
Sends a command to the given group, requesting an acknowledgement of transmission to be sent back...
HebiRobotModelElementPtr hebiRobotModelElementCreateLink(HebiLinkType link_type, HebiLinkInputType input_type, HebiLinkOutputType output_type, double extension, double twist)
Creates a rigid body, including mass and static transforms, corresponding to a standard HEBI link...
HebiStatusCode hebiGroupInfoWriteGains(HebiGroupInfoPtr info, const char *file)
Export gains from a GroupInfo object into a file.
struct HebiRobotModelElementTopology_ HebiRobotModelElementTopology
HebiGroupInfoPtr hebiGroupInfoCreate(size_t size)
Creates a GroupInfo for a group with the specified number of modules.
struct HebiTrajectory_ * HebiTrajectoryPtr
The C-style's API representation of a trajectory.
The firmware safety limit for the maximum allowed velocity.
An invalid argument was supplied to the routine (e.g. null pointer)
The AR session is attempting to resume after an interruption.
HebiCommandFloatField
Command Enums.
void hebiGroupFeedbackClear(HebiGroupFeedbackPtr feedback)
Clears all data in the GroupFeedback object.
How the position, velocity, and effort PID loops are connected in order to control motor PWM...
Camera position tracking is not available.
The spring constant of the module.
HebiStatusCode hebiGetLibraryVersion(int32_t *major, int32_t *minor, int32_t *revision)
Get the version of the library.
Current supplied to the motor.
HebiCommandNumberedFloatField
Set the internal encoder reference offset so that the current position matches the given reference co...
struct HebiCommandMetadata_ HebiCommandMetadata
I/O pin bank c (pins 1-8 available)
float * numbered_float_fields_
HebiIKPtr hebiIKCreate(void)
Inverse Kinematics API.
void hebiCommandGetReference(HebiCommandPtr command, HebiCommandRef *ref)
HebiStatusCode hebiLookupEntryListGetFamily(HebiLookupEntryListPtr lookup_list, size_t index, char *buffer, size_t *length)
size_t hebiRobotModelGetImportWarningCount()
Retrieve the number of warnings corresponding to the last call to hebiRobotModelImport. This must be called on the same thread as the call to hebiRobotModelImport.
How the position, velocity, and effort PID loops are connected in order to control motor PWM...
The estimated temperature of the motor windings.
const HebiHighResAngleStruct * high_res_angle_fields_
Timestamp of when message was transmitted to module (local)
const uint64_t * uint64_fields_
void hebiGroupCommandRelease(HebiGroupCommandPtr command)
Frees resources created by the GroupCommand object.
HebiGroupPtr hebiGroupCreateFromFamily(HebiLookupPtr lookup, const char *family, int32_t timeout_ms)
Create a group with all modules known to the lookup with the given family.
HebiStatusCode hebiRobotModelAdd(HebiRobotModelPtr robot_model, HebiRobotModelElementPtr existing_element, size_t output_index, HebiRobotModelElementPtr new_element)
Add an element to a parent element connected to a robot model object.
Proportional PID gain for effort.
Maximum allowed value for input to the PID controller.
HebiStatusCode hebiIKSolve(HebiIKPtr ik, HebiRobotModelPtr model, const double *initial_positions, double *ik_solution, void *result_info)
Solves for an inverse kinematics solution that moves the end effector to a given point.
Maximum allowed value for input to the PID controller.
A filtered estimate of the orientation of the module.
Controls whether the Kd term uses the "derivative of error" or "derivative of measurement." When the setpoints have step inputs or are noisy, setting this to false can eliminate corresponding spikes or noise in the output.
HebiInfoFloatField
Info Enums.
Maximum allowed value for input to the PID controller.
Maximum allowed value for the output of the integral component of the PID loop; the integrated error ...
void hebiLogFileRelease(HebiLogFilePtr log_file)
Logging API.
HebiQuaternionf * quaternionf_fields_
Proportional PID gain for position.
Maximum allowed value for input to the PID controller.
Output from the PID controller is limited to a maximum of this value.
const uint32_t * led_fields_
A simple lowpass filter applied to the target set point; needs to be between 0 and 1...
Controls whether the Kd term uses the "derivative of error" or "derivative of measurement." When the setpoints have step inputs or are noisy, setting this to false can eliminate corresponding spikes or noise in the output.
A simple lowpass filter applied to the controller output; needs to be between 0 and 1...
HebiIoBankPinResidentType stored_type_
const float * numbered_float_fields_
Output from the PID controller is limited to a minimum of this value.
Constant offset to the velocity PID output outside of the deadzone; it is added when the error is pos...
Error values within +/- this value from zero are treated as zero (in terms of computed proportional o...
HebiFeedbackPtr hebiGroupFeedbackGetModuleFeedback(HebiGroupFeedbackPtr feedback, size_t module_index)
Get an individual feedback for a particular module at index module_index.
The position limit strategy (at the minimum position) for the actuator.
struct HebiLookup_ * HebiLookupPtr
Feed forward term for position (this term is multiplied by the target and added to the output)...
Maximum allowed value for input to the PID controller.
const uint64_t * uint64_fields_
Success; no failures occurred.
The estimated current in the motor windings.
size_t hebiRobotModelGetNumberOfElements(HebiRobotModelPtr robot_model)
Returns the number of elements added to the kinematic tree.
Timestamp of when message was transmitted from module (remote)
HebiRobotModelElementPtr hebiRobotModelElementCreateBracket(HebiBracketType bracket_type)
Creates a rigid body, including mass and static transforms, corresponding to a standard HEBI bracket...
HebiRobotModelElementPtr hebiRobotModelElementCreateRigidBody(const double *com, const double *inertia, double mass, size_t num_outputs, const double *outputs, HebiMatrixOrdering ordering)
Creates a rigid body defining static transforms to the given outputs.
HebiStatusCode hebiLogFileGetNextFeedback(HebiLogFilePtr log_file, HebiGroupFeedbackPtr field)
Retrieve the next group feedback from the opened log file.
Derivative PID gain for effort.
The temperature from a sensor near the motor housing.
HebiStatusCode hebiStringGetString(HebiStringPtr str, char *buffer, size_t *length)
String Functions.
Controls whether the Kd term uses the "derivative of error" or "derivative of measurement." When the setpoints have step inputs or are noisy, setting this to false can eliminate corresponding spikes or noise in the output.
Integral PID gain for effort.
The firmware safety limit for the minimum allowed effort.
HebiStatusCode hebiLookupSetLookupFrequencyHz(HebiLookupPtr lookup, double frequency)
sets the lookup request rate [Hz]
struct HebiLogFile_ * HebiLogFilePtr
The C-style's API representation of a log file.
The scene visible to the camera does not contain enough distinguishable features for image-based posi...
HebiVector3f * vector3f_fields_
Controls whether the Kd term uses the "derivative of error" or "derivative of measurement." When the setpoints have step inputs or are noisy, setting this to false can eliminate corresponding spikes or noise in the output.
const HebiQuaternionf * quaternionf_fields_
Feed forward term for effort (this term is multiplied by the target and added to the output)...
Integral PID gain for velocity.
HebiStatusCode hebiRobotModelSetBaseFrame(HebiRobotModelPtr robot_model, const double *transform, HebiMatrixOrdering ordering)
Sets the fixed transform from the origin to the input of the first added model element.
struct HebiLookupEntryList_ * HebiLookupEntryListPtr
Integral PID gain for velocity.
Maximum allowed value for the output of the integral component of the PID loop; the integrated error ...
const HebiIoBankPinStruct * io_fields_
Position of the module output (post-spring).
HebiStatusCode hebiInfoGetString(HebiInfoPtr info, HebiInfoStringField field, char *buffer, size_t *length)
Info API.
HebiStatusCode hebiRobotModelGetBaseFrame(HebiRobotModelPtr robot_model, double *transform, HebiMatrixOrdering ordering)
Retreives the fixed transform from the origin to the input of the first added model element...
HebiStatusCode hebiRobotModelGetTreeTopology(HebiRobotModelPtr robot_model, HebiFrameType frame_type, HebiRobotModelElementTopology *table)
returns table of information about the shape of kinematic tree
const HebiVector3f * vector3f_fields_
Temperature of the processor chip.
Output from the PID controller is limited to a maximum of this value.
const HebiHighResAngleStruct * high_res_angle_fields_
I/O pin bank d (pins 1-8 available)
Output from the PID controller is limited to a minimum of this value.
Maximum allowed value for the output of the integral component of the PID loop; the integrated error ...
struct HebiGroupFeedback_ * HebiGroupFeedbackPtr
The C-style's API representation of a feedback object for a group of modules.
HebiStatusCode hebiGroupCommandWriteGains(HebiGroupCommandPtr command, const char *file)
Export gains from a GroupCommand object into a file.
Set the internal effort reference offset so that the current effort matches the given reference comma...
Effort at the module output; units vary (e.g., N * m for rotational joints and N for linear stages)...
HebiStatusCode hebiGroupGetNextFeedback(HebiGroupPtr group, HebiGroupFeedbackPtr feedback, int32_t timeout_ms)
Returns the most recently stored feedback from a sent feedback request, or returns the next one recei...
A simple lowpass filter applied to the controller output; needs to be between 0 and 1...
HebiStatusCode hebiLookupEntryListGetMacAddress(HebiLookupEntryListPtr lookup_list, size_t index, HebiMacAddress *mac_address)
Error values within +/- this value from zero are treated as zero (in terms of computed proportional o...
HebiGroupPtr hebiGroupCreateFromMacs(HebiLookupPtr lookup, const HebiMacAddress *const *addresses, size_t num_addresses, int32_t timeout_ms)
Create a group of modules with the given MAC addresses.
void hebiRobotModelRelease(HebiRobotModelPtr robot_model)
Frees resources created by this robot model object.
Tracking is available albeit suboptimal for an unknown reason.
A simple lowpass filter applied to the target set point; needs to be between 0 and 1...
Commanded velocity of the module output (post-spring)
void(* GroupFeedbackHandlerFunction)(HebiGroupFeedbackPtr fbk, void *user_data)
Group feedback handling function signature.
size_t hebiLogFileGetNumberOfModules(HebiLogFilePtr log_file)
Retrieve the number of modules in the group represented by an opened log file.
I/O pin bank d (pins 1-8 available)
double hebiLookupGetLookupFrequencyHz(HebiLookupPtr lookup)
gets the lookup request rate [Hz]
The estimated temperature of the motor housing.
Minimum allowed value for input to the PID controller.
HebiInfoPtr hebiGroupInfoGetModuleInfo(HebiGroupInfoPtr info, size_t module_index)
Get an individual info for a particular module at index module_index.
The device is moving too fast for accurate image-based position tracking.
Error values within +/- this value from zero are treated as zero (in terms of computed proportional o...
HebiStatusCode hebiIKAddObjectiveEndEffectorPosition(HebiIKPtr ik, double weight, size_t end_effector_index, double x, double y, double z)
Add an objective that optimizes for the end effector output frame origin to be at the given (x...
Error values within +/- this value from zero are treated as zero (in terms of computed proportional o...
A simple lowpass filter applied to the target set point; needs to be between 0 and 1...
struct HebiRobotModelElementMetadata_ HebiRobotModelElementMetadata
int32_t hebiGroupGetCommandLifetime(HebiGroupPtr group)
Returns the current command lifetime, in milliseconds.
HebiRobotModelElementPtr hebiRobotModelElementCreateEndEffector(HebiEndEffectorType end_effector_type, const double *com, const double *inertia, double mass, const double *output_frame, HebiMatrixOrdering ordering)
Creates a robot model element corresponding to a standard HEBI end effector, or a custom end effector...
Error values within +/- this value from zero are treated as zero (in terms of computed proportional o...
HebiStatusCode hebiGroupFeedbackCopy(HebiGroupFeedbackPtr dest, HebiGroupFeedbackPtr src)
Clears the dest GroupFeedback object, and copies all data from the src GroupFeedback object to dest...
struct HebiQuaternionf_ HebiQuaternionf
size_t hebiGroupGetSize(HebiGroupPtr group)
Returns the number of modules in a group.
Controls whether the Kd term uses the "derivative of error" or "derivative of measurement." When the setpoints have step inputs or are noisy, setting this to false can eliminate corresponding spikes or noise in the output.
Velocity of the difference between the pre-spring and post-spring output position.
HebiStatusCode hebiIKAddConstraintJointAngles(HebiIKPtr ik, double weight, size_t num_joints, const double *min_positions, const double *max_positions)
Define joint angle constraints.
struct HebiRobotModelElement_ * HebiRobotModelElementPtr
HebiStatusCode hebiGroupCommandWriteSafetyParameters(HebiGroupCommandPtr command, const char *file)
Export safety parameters from a GroupCommand object into a file.
A simple lowpass filter applied to the target set point; needs to be between 0 and 1...
HebiGroupPtr hebiGroupCreateImitation(size_t size)
Group API.
Maximum allowed value for input to the PID controller.
size_t hebiRobotModelGetNumberOfFrames(HebiRobotModelPtr robot_model, HebiFrameType frame_type)
Return the number of frames in the forward kinematic tree of the robot model.
HebiStatusCode hebiGroupRegisterFeedbackHandler(HebiGroupPtr group, GroupFeedbackHandlerFunction handler, void *user_data)
Add a function that is called whenever feedback is returned from the group.
struct HebiIK_ * HebiIKPtr
Describes how the temperature inside the module is limiting the output of the motor.
void hebiGroupClearFeedbackHandlers(HebiGroupPtr group)
Removes all feedback handling functions from the queue to be called on receipt of group feedback...
The name for this module. The string must be null-terminated and less than 21 characters.
Timestamp of when message was received by module (remote)
The motion stop strategy for the actuator.
Maximum allowed value for the output of the integral component of the PID loop; the integrated error ...
I/O pin bank a (pins 1-8 available)
const char * hebiSafetyParametersGetLastError(void)
Misc Functions.
HebiRobotModelElementType
const char * hebiRobotModelGetImportWarning(size_t warning_index)
Retrieve the 'ith' warning string from the last call to hebiRobotModelImport. This must be called on ...
const HebiIoBankPinStruct * io_fields_
Feed forward term for velocity (this term is multiplied by the target and added to the output)...
Indicates if the module should save the current values of all of its settings.
HebiRobotModelPtr hebiRobotModelImport(const char *file)
Import robot model from a file into a RobotModel object.
Position of the module output (post-spring).
struct HebiGroup_ * HebiGroupPtr
The C-style's API representation of a group.
Software-controlled bounds on the allowable effort of the module.
The firmware safety limit for the minimum allowed velocity.
void hebiCleanup(void)
Frees all resources created by the library. Note: any calls to the HEBI library functions after this ...
HebiStatusCode hebiGroupInfoWriteSafetyParameters(HebiGroupInfoPtr info, const char *file)
Export safety parameters from a GroupInfo object into a file.
void hebiLookupEntryListRelease(HebiLookupEntryListPtr lookup_list)
Release resources for a given lookup entry list; list should not be used after this call...
Constant offset to the position PID output outside of the deadzone; it is added when the error is pos...
Output from the PID controller is limited to a minimum of this value.
void hebiIKClearAll(HebiIKPtr ik)
Clears the objectives and constraints from this IK object, along with any modifications to the defaul...
const HebiVector3f * vector3f_fields_
Constant offset to the position PID output outside of the deadzone; it is added when the error is pos...
The motion stop strategy for the actuator.
I/O pin bank c (pins 1-8 available)
HebiStatusCode
Enum Types.
I/O pin bank a (pins 1-8 available)
A simple lowpass filter applied to the controller output; needs to be between 0 and 1...
void hebiLookupRelease(HebiLookupPtr lookup)
Frees resources created by the lookup object.
struct HebiIoBankPinStruct_ HebiIoBankPinStruct
const bool * bool_fields_
Commanded effort at the module output; units vary (e.g., N * m for rotational joints and N for linear...
Velocity of the module output (post-spring).
Controls whether the Kd term uses the "derivative of error" or "derivative of measurement." When the setpoints have step inputs or are noisy, setting this to false can eliminate corresponding spikes or noise in the output.
I/O pin bank e (pins 1-8 available)
Minimum allowed value for input to the PID controller.
HebiRobotModelPtr hebiRobotModelImportBuffer(const char *buffer, size_t buffer_size)
Import robot model from a buffer into a RobotModel object.
const uint32_t * led_fields_