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