API 2.0 Discussion - HebiRobotics/hebi-matlab-api GitHub Wiki

MATLAB 2.0 Suggested Changes

Feedback

  • Clarify feedback field names where needed. The main thing that I see is the temperatures are all kinda poorly named. The C API does a better job with things like boardTemperature instead of ambientTemperature. And motorHousingTemperature instead of actuatorTemperature.

Trajectories

  • Remove moveJoint/moveLinear wrappers
  • Maybe add utility methods like HebiTrajectories.interpLinear6doffor linear movements
  • Force people to use 2-step blocking and non-blocking API.
  • Provide ‘blocking’ helper functions where needed in the examples.
  • newLinearMove become an example, rather than API method
  • Full time vector required for trajGen
  • Expose heuristic for generating waypoint times. (maybe in HebiUtils?)
  • Speed factor factors into time heuristic, not trajGen
  • Make HebiTrajectoryGenerator static? (keep name same? HebiTrajectories.newJointMove seems weird)

Kinematics

  • Require initial joint angles for getIK
  • Remove Fieldable Types
  • Drop mass from getJointInfo (and maybe getBodyInfo)
  • Check naming/make consistent with C/C++ API (getJoint, getNumDoF, …)

HebiPoseFilter

  • Remove entirely

HebiUtils

  • Change quat2rotMat to assume that the quaternions are column vectors instead of row vectors. That matches the convention that feedback is a row vector and then you can just 'stack them' to batch process into rotation matrices. I don't know what I was thinking when I wrote that one. Sorry (Dave).

GainStruct

  • Probably have it initialize with gain XML, GainStruct('gains.xml'), like what we do with HebiKinematics(‘blah.hrdf’), then get rid of HebiUtils.loadGains()?
  • Tease apart safety limits? Have a discussion!
  • Maybe change the name to ControlParamStruct or something like that
  • Maybe separate XML for safety?
  • Maybe leave together in XML, call the XML something other than ‘gains’, even if the API loads the same XML with two different functions for gains and safety params.

IOCommandStruct

  • Maybe change name to CommandStructIO to make it more autocomplete-discoverable / sort better? It’d be pretty easy to fix this in the 1-2 examples we have that actually send commands to an IO board.
  • Would be nice for sorting if we wind up having a CommandStructMobile or whatever down the road.
  • Or maybe not.

Info Structs / Tables

  • Go through them and make sure we want to keep all the info there