Downloads

Software

Application Downloads Links

1. Requires Java 8 update 60 or higher to be installed. Linux distributions may require additional OpenJFX packages.


API Downloads Links

(>R2013b)
Windows (Win64)
Linux (x86-64)
macOS (64-bit)

Windows (Win32 / Win64)
Linux (x86-64 / ARM)
macOS (64-bit)

C++

Windows (Win32 / Win64)
Linux (x86-64 / ARM)
macOS (64-bit)


1. .tar.gz file preserves symlinks for macOS/Linux shared libraries

ROS

Linux (x86-64)

C

Windows (Win32 / Win64)
Linux (x86-64 / ARM)
macOS (64-bit)


1. .tar.gz file preserves symlinks for macOS/Linux shared libraries

Datasheets

Below is a list of datasheets.

Additional drawings and CAD models can be found in the accessories section, or on our public GrabCAD repository.

Part Numbers Description Links

A-2020-05-01
A-2020-05-04
A-2020-05-09

A-2020-08-03
A-2020-08-09
A-2020-08-16

X5/8-Series Actuators

A-2116-01
A-2116-02

I/O Board

Changelogs

Scope GUI Changelog

RC 0.13

Revision Changes

2539

  • Monitoring

    • Added ability to record log files

  • IO Tab

    • Changed digital outputs to toggle buttons instead of checkboxes to be less confusing

  • General

    • Updated bundled runtime to JDK8_u181

  • Bugfixes

    • Fixed an issue that caused load/save gains to fail if the previously used directory was deleted or renamed

RC 0.12

Revision Changes

2479

  • Monitoring

    • Added I/O tab for plotting feedback from I/O boards and the mobile app

    • Added Ctrl+W keyboard handler for closing plot windows

  • Device

    • Disabled ref-point setting for multiple modules

  • General

    • Changed device overview to be hierarchical and always sorted

    • Fixed some display issues on Linux

RC 0.11

Revision Changes

2445

  • Info

    • Added display of static/dhcp mode to ip address. This feature may require a firmware update.

  • Monitoring

    • The location when saving/loading gains is now persistent

  • General

    • Added QoS flags to UDP requests and increased receive and transmit buffers

RC 0.10

Revision Changes

2185

  • General

    • Fixed Bootloader UI startup

    • Fixed a bug that caused Scope to crash if modules respond with malformed messages

RC 0.9

Revision Changes

2180

  • Monitoring

    • Changed default position slider limits to +/- 4 rotations to prevent most cases of snapping when limits are left at +/- inf

  • General

    • Changed auto-update to work with new bootloaders

    • Added reset (bl) context menu for getting into new bootloaders

    • Added link to firmware changelog to auto-update dialog

    • Fixed some Linux specific rendering issues

RC 0.8

Revision Changes

2148

  • Monitoring

    • Changed sliders to show feedback when disabled

    • Changed sliders to save/load state when switching between modules

    • Added slider targets that allow setting specific values

  • Gains

    • Added a button that loads default gains

    • Added another send button that additionally persists

    • Added highlighting when gain input is different from set value

  • Info

    • Removed Connectivity section

  • General

    • Various minor display changes

    • Fixed some Linux specific rendering issues

RC 0.7

Revision Changes

2121

  • General

    • Added multi-select

    • Various cosmetic changes (e.g. fixed cut-off …​ in Linux)

    • Limited info slider range to 1-100 Hz

  • Monitoring

    • All charts: added optional fixed time windows that force the displayed time range to remain constant regardless of the number of points or their incoming frequency

    • Latency chart: fixed a bug that caused points to be displayed on the edges when zooming

    • Reduced aggressiveness of point skipping

    • Removed max limit (was 20 rad/s) from velocity slider

    • Changed plotting windows to cascade rather than being stacked

  • Gains

    • Changed number of zeros of D and I term to better hint at expected values

    • Added ability to save and load group-gains

  • Update Dialog

    • Removed stale modules from update search

    • Changed table to immediately refresh when opened

    • Added minor indicator if updates are available

RC 0.6

Revision Changes

1908

  • General

    • Renamed torque to effort to better accommodate non-rotary joints

    • Added ability to automatically update multiple modules

    • Added ability to select individual ip addresses for lookup

    • Replaced auto-sort with manual sort to avoid resetting the selection when new devices join the network

    • Reduced size to better fit on Laptop displays

    • Various cosmetic changes

  • Monitoring

    • Added "hw-type | serial" to plot title

    • Added manual scaling options to better support demos and HighDPI displays

    • Reduced rate that arrow keys move sliders to 20% of the original rate

    • Improved performance of latency chart

    • Changed overload behavior to skip points instead of introducing lag

  • Gains

    • Added ability to save and load gains to and from XML files

  • Device

    • Added fields that allow setting non-zero position/torque reference points

RC 0.5

Revision Changes

1799

  • General

    • Added display toggle between human readable names and hardware type and serial number

    • Added a button to refresh network interfaces to reduce the need for restarts

  • Gains

    • Changed gain validation to allow +/- inf values for min/max target/output and I-Clamp

RC 0.4

Revision Changes Bugfixes

1628

Added selector for M-Stop strategy

1515

  • Fixed an SSL certificate issue related to firmware updates

1439

  • Changed name of Main GUI to "Scope"

  • Added auto-update

  • Added standalone binaries for mac, linux, windows

  • Removed all "unsafe" buttons from the device tab

  • Added scrollbars to all tabs to avoid issues with low resolution screens

RC 0.3

Revision Changes Bugfixes

1327

  • Removed deprecated debug buttons

MATLAB API Changelog

After v1.0 release, major version number changes indicate backwards incompatible changes, while minor version number changes are backwards compatible, both in API and ABI. Before v1.0, changes that break backwards compatibility are highlighted in bold.

Release 1.4

Revision Changes

1.4.3 (2457)

  • Bugfixes

    • timeout now also works for getNextFeedbackFull and other specializations

    • fixed hrdf parameter overriding (e.g. mass_offset) for links and brackets

1.4.2 (2455)

  • Bugfixes

    • Fixed a bug when parsing com_trans in hrdf

1.4.1 (2452)

  • HebiKinematics

    • Added a warning if 'so3' is not a valid rotation matrix (det != 1)

  • General

    • Improved help documentation

    • Removed overview documentation related to S-Series modules (addBody and newConnectedGroup). Old calls still work.

1.4 (2443)

  • HebiLookup

    • Added initialize() method to allow for a reset without restarting MATLAB

  • HebiGroup

    • Added state feedback to full feedback structs and log formats

    • Added Mobile feedback view

    • Added IO and Mobile feedback to supported MAT-file conversions in stopLog

    • Added support for reusing multiple feedback structs in a single call to getNextFeedback. This enables retrieving different types, e.g., Full and IO, in a single call.

    • Added getNextFeedback('timeout', 0) for non-blocking checks. Returns empty if no new feedback is available.

    • Added inf to accepted values for command lifetime. This causes commands to no never time out.

  • HebiKinematics

    • Added experimental support for loading hrdf v1.1 files

    • inverse kinematics: Changed default initial conditions to a small non-zero value (1E-6) to avoid starting in singularities. Note that this parameter is only optional to remain backwards compatible, and that users should always supply their own initial conditions.

  • HebiUtils

    • Made last directory in convertGroupLogsUI persistent

  • General

    • Added QoS flags to UDP requests and increased receive and transmit buffers

    • Internal improvements related to writing MAT files

    • Changed linear axes in GenericJoint to tx,ty,tz instead of x,y,z

  • Bugfixes

    • Increased max number of arguments of getNextFeedback so that view can be called in conjunction with timeout

    • Fixed a rare bug that caused the synchronization mechanism to throw away good data when reading logs created by the C based APIs under certain circumstances

Release 1.3

Revision Changes

2169

  • General

    • Further improved help documentation

  • HebiUtils

    • Added loadGroupLog and loadGroupLogsUI convenience methods for reading logs into memory

    • added quat2rotMat to convert a quaternion to a 3x3 rotation matrix

  • HebiGroup

    • Added alpha channel as settable color. 0 = transparent

    • Added alpha channel to led feedback

    • Added pose feedback quaternion. Note that this may require a firmware update.

Release 1.2

Revision Changes

2085

  • General

    • Improved help documentation

  • HebiUtils

    • Added plotLog and plotTrajectory methods for plotting

    • Added convertGroupLogsUI to load one or more logs via a GUI dialog

    • Added info and gains to return arguments in convertGroupLog

  • HebiLookup

    • Added a pause to clearModuleList to rebuild the module table before returning

  • HebiGroup

    • Added raw format option to stopLog to avoid costly conversions. This is useful for rolling log-files (e.g. create a new file once an hour) inside a control loop.

    • Added getInfo and getGains to log groups created with HebiUtils.createGroupFromLog

  • HebiKinematics

    • Added support for 'X8-16'

    • Added 'Frame' to frame strings, e.g., 'Output' becomes 'OutputFrame' (backwards compatible)

  • HebiTrajectoryGenerator

    • Removed internal dependency on HebiKinematics. HebiKinematics is now only required for certain parts of the API such as executeTrajectory with effort compensation.

    • Improved newLinearMove

  • Bugfixes

    • Fixed a bug that caused HebiUtils.saveGains to create invalid gain files on certain non-English locale settings (e.g. German)

Release 1.1

Revision Changes

2009

  • HebiKinematics

    • General performance improvements across the board

    • Increased default max iterations for IK from 75 to 150

  • HebiTrajectoryGenerator

    • Significantly improved performance of 'UnconstrainedQp' algorithm. It is now feasible to use for large number of waypoints. 'MinJerkMove' can now be considered deprecated.

  • Bugfixes

    • Setting control strategy was changed to not accept non-integer values

    • Fixed a network lookup failure that occurred when certain VPN programs were active

    • Fixed getJacobianEndEffector to be calculated at the output rather than at the center of mass of the end effector

    • Fixed a bug that caused 'ReferenceEffort' to be ignored when it was the only command that got sent.

Release 1.0

Revision Changes

1908

  • General

    • Renamed torque to effort to better accommodate non-rotary joints. Existing code can be upgraded by running search and replace as follows,

      • torque → effort (case-sensitive)

      • Torque → Effort (case-sensitive)

      • TorLim → EffLim (not case-sensitive)

  • HebiUtils

    • Added ability for saving and loading gains to and from xml files

RC 1.0

Revision Changes

1859

  • HebiLookup

    • Added getters for lookup addresses and frequency

  • HebiGroup

    • Added better error message when log conversion fails due to memory constraints

  • HebiKinematics

    • Improved AddBody help documentation

    • Improved TipAxis objective for IK

    • Improved IK to keep results to within one rotation of the initial condition

1820

  • HebiGroup

    • Renamed set() to send()

    • Added 'Inf/infinity' as valid input to min/max output/target and I-clamp gains

    • Added 'motorPosition' to full feedback

    • Fixed a bug that occurred on some machines when reading log files

    • Added support for reading partially written log files

    • Added setting encoder and position reference points

  • HebiTrajectoryGenerator

    • Changed the default algorithm to 'UnconstrainedQp'

  • HebiKinematics

    • Made naming more consistent

    • Added 'X5-LightBracket' and 'X5-HeavyBracket' w/ various mount options to available module types

    • Reverted direction of the gravity vector for 'getGravCompTorques' (breaks backwards compatibility!!!)

    • Made SO3 objective more stable

  • HebiPoseFilter

    • Overhauled API to make it more usable

  • General

    • Made 'hebi_load()' callable to simplify pre-loading libraries

RC 0.7

Revision Changes

1741

  • HebiLookup

    • Added methods to create a group from serial numbers

    • Switched display of mac addresses to serial numbers

  • HebiGroup

    • Added group.stopLog('LogFormat', 'raw') to stop logging without doing any expensive conversion. This is useful for cases where logging needs to be stopped without halting execution

    • Fixed a bug introduced in rev1732 that prevented gtroups of >30 modules from logging

1732

  • HebiGroup

    • Internal changes to the way logging is done (fully backwards compatible)

    • Added info messages, e.g., gains, names, etc., to log files. Support for reading logged info messages will be added at a future date.

  • HebiKinematics

    • Added an objective to IK that tries to keep the joint angles within +/- pi of the initial condition. This fixes an issue where IK resulted in jumps over multiple rotations on slight variations of the initial conditions.

1723

  • HebiGroup

    • Internal improvements related to converting logs

    • Changed 'Hdr' log format to record each module separately

  • HebiKinematics

    • Added new joint types including X8-3 and X8-9

  • HebiPoseFilter (not a supported API)

    • Fixed a bug that caused the filter to initialize with NaN under some rare conditions

1709

  • HebiTrajectory

    • added getWaypointTime() to get access the times when waypoints are hit.

    • removed the restriction that 'time' needs to start at zero for 'UnconstrainedQp' trajectories.

  • HebiKinematics

    • Fixed a bug that prohibited the calculation of forward kinematics for chains without any joints. The empty matrix "[]" is now a valid position argument.

  • HebiLookup

    • made initOnce() public for cases where the loading of additional Java libraries resets the Java classpath without reinitializing the backing MATLAB class.

1702

  • HebiTrajectoryGenerator

    • Removed requirement for defined end positions when a user supplies a fully defined time vector (UnconstrainedQp algorithm only)

1700

  • HebiKinematics

    • Added ability to set a payload for calculating compensatory torques

  • HebiTrajectoryGenerator

    • Added trajectory implementation that supports velocity and acceleration constraints ('unconstrainedQp')

    • Added speedFactor to allow users to slow down trajectories

    • Overhauled TrajectoryGenerator API

RC 0.6

Revision Changes

1628

  • Added Trajectories to the API

    • Note that RC 0.6 is fully backwards compatible with RC 0.5, but we felt that trajectories was a large enough addon to increase the version number.

  • Bugfixes

    • Fixed logging to stop automatically if the disk is full

RC 0.5

Revision Changes

1434

  • changed HdrHistogram conversion to combine all output files into a single file with multiple tags

  • minor performance improvements

  • Bugfixes

    • Fixed a networking issue that caused a "wall of errors" when cables were disconnected on macOS and Linux

1424

  • HebiLookup

    • the display was changed to make it more obvious when modules become stale

  • HebiGroup API

    • getInfo() now returns a table that behaves consistently for any number of modules. Added 'pcRxTime' and removed 'distal/proximal' ids.

    • changed 'Min/Max-PositionLimit' in set() to a single 'PositionLimit' parameter that is consistent withHebiKinematics.addBody()

    • getNextFeedback() now throws an exception on timeout instead of returning empty. Log-replay groups continue to return empty when the end of a log file is reached.

    • added an optional 'Timeout' parameter to getNextFeedback for setting custom timeouts

  • HebiKinematics General

    • improved display to match HebiGroup and HebiLookup

    • added convenience overloads for getJacobianEndEffector and getForwardKinematicsEndEffector. This should simplify auto-complete.

  • HebiKinematics Bodies

    • added required 'twist' parameter to 'X5Link'. The previous default value was 'pi'.

    • 'CoM' was changed to be a 3x1 vector instead of a transform. The vector describes the location of the CoM in the body’s input frame.

    • 'FieldableGripper' is now considered a link and instead of a DoF

    • added getBodyInfo() and getJointInfo()

    • added support for overriding 'mass' on any body

    • added support for overriding position, velocity and torque limits on joints. Position limits get used by IK.

    • changed the default position limits for X5 modules to be +/- Inf

    • deprecated 'X5Joint' and added 'X5-1', 'X5-4' and 'X5-9'

  • HebiKinematics IK

    • added 'nan' inputs to 'xyz' objective to ignore not applicable dimensions

    • added a warning message in case IK doesn’t converge within max number of iterations

RC 0.4

Revision Changes

1371

  • Added support for logical vectors in reset/boot commands

  • Changed logical inputs to only allow 0 or 1 values to avoid ambiguity

1356

  • Changed default naming of logs to use absolute wall-clock time

  • Minor performance improvements

1328

  • Added getBaseFrame() to kinematics

1324

  • Added basic support for I/O Board (commands, feedback, logging struct)

  • Minor performance improvements

1289

  • Added support for high-res position

  • Added support for setting position limits (virtual hard stop)

  • Minor performance improvements

1270

  • Changed getJacobian() output to 6xNxM matrices to be consistent with getForwardKinematics()

  • Changed getAccelCompTorques name to getDynamicCompTorques

RC 0.3

Revision Changes

1263

  • Internal performance improvements

  • Bugfixes

    • Log files now always get closed properly when disposing groups

1241

  • Added getAccelCompTorques to HebiKinematics

1234

  • Added command lifetime safety feature to mitigate risks on unexpected interruptions (requires firmware upgrade to work)

1229

  • Cleaned up auto-complete

  • Changed display of empty groups to be more appropriate

1223

  • Added GenericLink to HebiKinematics

  • Bugfixes

    • Modified group creation such that each module must be unique

1218

  • Improved display for HebiLookup and HebiGroup

1214

  • Extensive API rework

Python API Changelog

After v1.0 release, major version number changes indicate backwards incompatible changes, while minor version number changes are backwards compatible, both in API and ABI. Before v1.0, changes that break backwards compatibility are highlighted in bold.

0.99.0

Features Changes/Fixes
  • Lookup frequency is now settable

  • Added motor_position field to feedback

  • Added mobile feedback fields (i.e., ar_position, ar_orientation and ar_quality)

  • Added HRDF support

  • Added ability to query Python and C API versions at runtime

  • Some objects defined in the hebi package now have human readable representations (repr())

  • Update targeted C API version to 1.4.2

  • Automatically append .hebilog file extension in Group.start_log if no extension was given

  • Fix a bug in the trajectory generator which fixes invalid default velocity and acceleration values

0.98.2

Features Changes/Fixes
  • Update targeted C API version to 1.3.0

  • Significantly improved RobotModel forward kinematics performance

  • Improved source code documentation

0.98.1

Features Changes/Fixes
  • Add an opt-in C API profiler to help detect computational bottlenecks outside Python code

  • Add optional output parameters in RobotModel API methods

  • Improve RobotModel API performance

  • Improve RobotModel thread local caches

0.98.0

Features Changes/Fixes
  • Added boot, position_limit and reset fields to GroupCommand

  • Added clear method to GroupCommand

  • Added orientation, limit, m_stop and state fields to GroupFeedback

  • Added microsecond alternative fields for timestamps in GroupFeedback

  • Added getter fields for commonly used fields, allowing the user to reuse an already allocated numpy array

  • Added linear joints to the RobotModel API

  • Added the "custom objective" function to the RobotModel API

  • Update targeted C API version to 1.2.0

  • Fix bug where the translation vector was incorrect for X8 series actuators

  • Improve memory usage at ctypes layer

  • Add thread local caches for the RobotModel API

  • Various small performance improvements

  • Improve PyPy 2.7 and 3.3 support

0.96.2

Features Changes/Fixes
  • Fixed edge case when RobotModel had no degrees of freedom

  • Improved memory usage at ctypes layer

  • Improved error message readability

  • Added more argument safety checks for internal components

  • Changed versioning convention to include a revision version

0.95

Features Changes/Fixes
  • Added name and family fields in the GroupCommand class

  • Added gains API For GroupCommand and GroupInfo

  • Updated targeted C API version to 1.0.0

  • Fixed a buffer overflow issue in the Lookup class

  • Improved source code documentation

  • Added more value and type checks in internal components

ROS API Changelog

After v1.0 release, major version number changes indicate backwards incompatible changes, while minor version number changes are backwards compatible, both in API and ABI. Before v1.0, changes that break backwards compatibility are highlighted in bold.

TBD

Features Changes/Fixes

CPP API Changelog

After v1.0 release, major version number changes indicate backwards incompatible changes, while minor version number changes are backwards compatible, both in API and ABI. Changes that break backwards compatibility on major version releases (or pre-v1.0) are highlighted in bold.

2.0.1

Features Changes/Fixes
  • Updated to C API v1.4.2 to fix initial feedback frequency bug.

2.0.0

Features Changes/Fixes
  • Add HRDF 1.1.0 import capabilities

  • Feedback additions: mobile feedback and motor position

  • GroupCommands now have a "Clear" function.

  • GroupFeedback has a "getTime" function (in seconds or microseconds), getting the timestamp of the last received packet in the GroupFeedback object.

  • Discovery/Lookup frequency can be retrieved and set.

  • Custom objectives can be added when using IK.

  • Added functions for retrieving C and C++ API version numbers

  • CMake update - better workflow, including hebi xdk support for cross compiling

  • timestamps, and sender ID moved from hebi::Feedback.actuator() to hebi::Feedback

  • Code format standardized

  • Update kinematics functions to use internal C API actuator/link/bracket helper functions

  • Update internal C API from 1.2.0 to 1.4.1.

  • Cleanup extraneous comments and code (e.g., reference to outdated examples, trajectory start/end conditions now handled in C API)

1.1.0

Features Changes/Fixes
  • Added module state feedback and filtered module orientation estimate

  • Added commandable position safety limits, and returned current value in info.

  • Added reset/boot/stop boot commands

  • Tweaks to cleanup compilation warnings

  • Update underlying C library to v1.2.0 from v1.0.0 (includes support for 64-bit ARM on linux)

  • Fixed bug in actuator COM position

1.0.0

Features Changes/Fixes
  • Initial full release; backwards compatibility will be maintained in future 1.0 releases.

  • Updated to v1.0.0 C API.

0.16.0

Features Changes/Fixes
  • Improved examples and documentation; created basic "tutorial" examples.

  • Updated to v0.16 C API.

  • Added explicit "Eigen" namespace before Vector classes to disambiguate name references during compilation.

0.15.0

Features Changes/Fixes
  • Easier deployment

    • Simplified CMake file

    • Separated library and examples

    • CMake files now demonstrate hierarchical build

  • Added initial version of a kinematics API.

  • Added trajectory API to assist in generation of smooth trajectories for robot motion.

  • Added I/O pin command and feedback support

  • Added API for programmatically retrieving the current contents of the module lookup object

  • Added support for macOS and ARM

  • Added ability to set command lifetime through the C++ API.

  • For commands and feedback, added convenience get and set functions for position, velocity, and torque fields; these function use Eigen double vectors (Eigen::VectorXd).

  • Updated to v0.15 C API.

  • Added path for log directory when logging.

  • Removed the "module" object based on customer feedback.

  • Separated out the libraries into platform specific directories (e.g., lib/winx64) to allow a single download for all platforms.

  • Fixed bug in GetString calls that would sometimes return uninitialized memory.

  • Added a number of "const" versions of getter function to allow better use within const-correct parent structures and classes.

  • Documentation updates.

  • Added dependency on Eigen v3.3.3. Included for convenience with downloaded packages.

  • Added index operator to mac address class.

C API Changelog

After v1.0 release, major version number changes indicate backwards incompatible changes, while minor version number changes are backwards compatible, both in API and ABI. Before v1.0, changes that break backwards compatibility are highlighted in bold.

1.4.2

Features Changes/Fixes
  • Fix race condition most commonly seen when setting feedback frequency immediately after creating a group; this potentially resulted in no received feedback until the feedback frequency was set again.

1.4.1

Features Changes/Fixes
  • Fixed initial C API feedback frequency for imitation groups to properly be set to the default (in 1.4.0, this was either undefined or 0, depending on the platform).

  • Definition of anonymous structures in hebi.h was technically not compliant with ISO C++11 standard 16.6.4.3. Changed from _Hebi<Type> to Hebi<Type>_ to eliminate undefined behavior.

1.4.0

Features Changes/Fixes
  • HRDF import - full version 1.1.0 support

  • added mobile feedback (AR quality, AR orientation/position, battery level) and motor position fields to the feedback struct

  • made lookup frequency settable

  • Update the default command lifetime and feedback frequency to match MATLAB API

1.3.0

Features Changes/Fixes
  • Added ability to create HEBI robot model components directly at the C API level (actuators, links, brackets, etc)

  • Added support for loading files using v1.0.0 of the hebi robot description format standard (see https://github.com/HebiRobotics/hebi-kit-xml )

1.2.0

Features Changes/Fixes
  • Added custom IK objectives

  • Can set/get firmware position limit using command/info

  • Info, command, and feedback group messages are now clearable and copyable.

1.1.0

Features Changes/Fixes
  • Added module state feedback and info (e.g., temperature limit state, joint limit state, m-stop state, etc)

  • Added commands to reset, boot, and stop boot of modules

  • Added linear joint type for kinematics and inverse kinematics

  • Added orientation feedback

  • Clearing the persist flag now works (before this didn’t affect the send packets)

1.0.1

Features Changes/Fixes
  • Fixed issue when sending IO commands (fixed situation which could overwrite or send command to higher-numbered IO pin)

  • Imitation group feedback frequency fixes - frequencies are now properly set, and 0 behaves as expected.

  • Trajectory start and end velocities and accelerations properly default to 0.

  • Refactored CMake workflow for easier inclusion in consuming projects

1.0.0

Features Changes/Fixes
  • Added a signal handler that can be enabled to catch debug output in the event of API crashes.

  • Added masses and inertias to RobotModel (previously kinematics)

  • Can retrieve filename on "startLog" call

  • Add "set reference position" and "set reference effort" to command object

  • Modules are sorted by name when creating a group by family

  • Formatting tweaks to hebi.h

  • All arguments to API are explicit integer types (uint32_t, size_t, etc) instead of int/long

  • Const added to pointer types as necessary in API calls

  • Various small function signature changes

  • Kinematics API significantly refactored and changed to RobotModel

  • IK functions changed to allow future support of tree kinematics

  • RobotModel API exclusively uses double precious numbers now.

1.0-rc6

Features Changes/Fixes
  • Add UInt64 fields

  • Disabled AVX instruction generation for Linux x86_64 library

  • Mac Address functions signatures changed to be compatible with FFIs

1.0-rc5

Features Changes/Fixes
  • Added serial number field to info messages.

  • Added sender ID field to feedback messages.

  • Updated "lookup" calls involving mac addresses to pass structures by reference instead of value for improved portability.

  • Fixed bug on certain platforms where GetNextFeedback returned success and and empty feedback if no feedback had been received.

  • Fixed XML gain "control strategy" tag parsing

  • Fixed macOS compilation issues.

  • Fixed basic/01_lookup.c example; previously, when parsing lookup entry list, names/families that were longer than previous values would not be displayed.

1.0-rc1 through 1.0-rc4

Features Changes/Fixes
  • requestFeedback has been removed and replaced with getNextFeedback to match the MATLAB convention; see corresponding C++ documentation for more information.

  • Log files: separate arguments are now included for directory and file, to increase log file location customization. Default file name is created from current time if not specified.

  • Added log file parsing support.

  • Improved/generalized IK interface; added new objectives and constraints.

  • Added support for reading gains from and writing gains to an XML file.

  • Added support for an "imitation group" which acts like a Group, but does not have a physical module backing it.

  • Added access to timestamps in the feedback messages (PC RX/TX and hardware RX/TX)

  • New Kinematics body creation helpers (light/heavy bracket)

  • Lookup name/family ordering switched when using hebiGroupCreateFromNames

  • "Torque" renamed "Effort" throughout API

  • Removed hebiLookupPrintTable function; programmatic access now provided via LookupEntryList functions.

  • Renamed platform specific "lib" directories

  • Refactored CMake files

  • All enums now have "Hebi" prepending (e.g., HebiFrameTypeOutput)

  • 'get' functions for feedback/commands/info now return sane defaults instead of undefined behavior if 'has' not set.

  • Significantly faster (e.g., kinematics code has sped up at least 10X).

  • Condensed include files into one file (hebi.h) to simplify integration

  • Renamed a number of functions for consistency.

0.16

Features Changes/Fixes
  • Added static keyword to variables and functions in hebi_kinematic_parameters.h

0.15

Features Changes/Fixes
  • Added first version of a kinematics API.

  • Updating logging implementation to include output path option and packet loss statistics.

  • Removed the "module" object based on customer feedback

  • Separated out the libraries into platform specific directories (e.g., lib/winx64) to allow a single download for all platforms.

  • Documentation updates

0.14

Features Changes/Fixes
  • Easier deployment

    • Simplified CMake file

    • Separated library and examples

    • CMake files now demonstrate hierarchical build

  • Added trajectory API to assist in generation of smooth trajectories for robot motion

  • Added API for programmatically retrieving the current contents of the module lookup object

  • Added I/O pin command and feedback support

  • Added "hebi.h" convenience header file to include the entire HEBI C API

  • Added support for macOS

  • Added separate x86 and x64 libraries for Windows

  • Rename several functions to improve naming consistency

    • Functions with Create always require calling a corresponding Release to free resources

    • Functions with Get return temporary variables that do not need to be freed

    • Functions taking an object of type <TypeName> always start with Hebi<TypeName>

  • Changed GetString calls to take in a buffer instead of return a pointer. Previously, return values could point to invalid memory

Firmware Changelog

X5_8 (C, D, E, F, and G)

Release Changes Bugfixes

14.1112.1092

  • Fixed issue that could cause slower response/packet loss on certain modules in conjunction with recent (>=1.1) C-family APIs

13.1091.1083 (C-F) 13.1097.1092 (G)

  • Initial release of X5-8G firmware.

  • Fixed problem where modules could occasionally boot up incorrectly when DHCP is enabled.

12.1085.1083

  • Module reports orientation feedback from onboard pose filter.

  • Module now returns "module state" feedback (e.g., joint limit, m-stop, temperature limiting state).

  • DHCP fully supported in app mode; supports new bootloaders which skip the "waiting to boot" phase.

  • Reduce IP renewal problems on routers with short lease times.

  • Allow commands which drive a robot back to "inside" the joint limit range, even if the module booted up "outside" of this zone.

  • Joint limit LED state no longer shown if module is close to joint limit but not actively limiting commanded output.

  • Adjusted performance curves.

  • Encoder resolution no longer reduced at large number of rotations.

  • Reduced packet loss at high command and feedback request load.

11.944.913

  • Initial release of X5-8F firmware.

  • Corrected sign when setting non-zero effort offsets.

10.888.885

  • Ki and Kd gains now have SI units. In particular time-scaling was changed from millieseconds to seconds.

    • Ki gains will be need to be multiplied by 1000 to have same effect as before.

    • Kd gains should be multiplied by .001 to have the same effect as before.

  • Feedforward gain change: 1.0 is now the appropriate default gain value for velocity and effort loops that output PWM.

  • Deadzone is changed to not accumulate integral error. Error outside of deadzone is now shifted to start at zero instead of being a discontinous jump.

  • Additional feedback sensor: motorPosition

  • Direct PWM control strategy now has settable min/max target PWM values.

  • Improved parameters of onboard gyro zero-update

  • Improved internal safety controllers to better protect the modules when running voltages above 24V

  • Improved motor winding thermal estimation

  • Improved stability of software position safety limits

  • Improved performance under high network communications loads

9.811.807 (C/D) 9.834.830 (E)

  • Initial release of X5-8E firmware.

  • Processed network packets more efficiently to improve responsiveness under high load.

8.795.793

  • Improved onboard thermal model by accounting for more secondary electronic effects.

  • Improved control stability of X8 while near velocity limits.

7.785.769

  • Internal calibration procedure updates

6.775.769

  • Internal calibration procedure updates

5.772.769

  • Firmware now supports X8 and X5 modules

  • Added 3-mode M-stop functionality (disabled, 'hold', and 'off' modes)

  • Improved onboard thermal limiting for the motor based on additional experimental data

  • Fixed an issue with the onboard timer that could theoretically lead to occasional very large, inaccurate reported time steps

  • Updated gyro low pass filter

4.0 rev629 (D only)

  • Fixed an issue in the thermal model that could cause a motor to overheat after a reset under continuous load

3.1 rev617 (D only)

  • Fixed an issue in the safety controller that could cause a motor to spin faster in one direction

3.0 rev629 (C) 3.0 rev606 (D)

  • Initial release of X5-8_D firmware.

  • Added auto-voltage scaling so that gains behave the same way under any voltage

  • Improved accelerometer bias (requires calibration)

  • Added a filter to continuously estimate and compensate for the gyro bias

  • Fixed an issue in the thermal model that could cause a motor to overheat after a reset under continuous load

  • Fixed an issue in the safety controller that could cause a motor to spin faster in one direction

2.0 rev519

  • Improved factory calibration for position and torque

1.0 rev480

  • Initial release of X5-8_C firmware.

S5_B

Release Changes Bugfixes

1.740.737

  • Initial release; duplicate of SEA_D release 2 except for electronics updates

S_CAM_A

Release Changes Bugfixes

2.745.737

  • Update thermal model

  • Limit LED brightness to ensure safe steady-state performance

1.743.737

  • Initial release

SEA_D

Release Changes Bugfixes

2.711.704

  • Auto gyro-unbiasing in IMU

  • Addition of settable accelerometer bias

  • Gains auto-scaled when supply voltage changes

  • Automatically persist name/family when these values are changed

  • New calibration routine that includes automatic determination and sanity checking of spring constant to help detect early spring failure

  • Added support for "command lifetime" feature

  • Updated default gains

  • Added user-settable torque offset (via GUI "zero torque" button)

  • Fixed an issue in the thermal model that could cause a motor to overheat after a reset under continuous load

  • Improved motor current estimate and IMU filtering settings

IO_BASIC_B

Release Changes Bugfixes

1.0 rev552

  • Initial release

Bootloader

Release Changes Bugfixes

10.1079.1076

  • By default, boot to application directly. DHCP is now handled by application code (>12 for X5_8)

8.832.830

  • Added support for new modules (internal)

7.810.807

  • Processed network packets more efficiently to improve responsiveness under high load

6.0.735.733

  • Disabled clearing of internal storage via the reset button

  • Updated version number display

  • Added support for new modules (internal)

5.0 rev599

  • Added support for new modules (internal)

  • Fixed an issue that caused IMU calibration to be cleared after a database erase

4.0 rev548

  • Added support for new modules (internal)

3.0 rev514

  • Added "auto-update"

2.0 rev478

  • Added support for new modules (internal)

1.0 rev345

  • Initial release