Skip to content

Releases: flexivrobotics/flexiv_rdk

v1.8

25 Oct 16:46
692f00c

Choose a tag to compare

COMPATIBILITY

  • Flexiv software package v3.10

ADD

  • Support creating lite instances of rdk::Robot via a constructor parameter. Add Robot::lite() to check if this instance is a lite instance.
  • Add new member has_FT_sensor to RobotInfo struct.
  • Add new members timestamp, tau_interact, and temperature (#128) to RobotStates struct.
  • Add Model::T() to compute the forward kinematics of a specified robot link (#121).
  • Add new methods SetTimelinessFailureLimit(), StopPlan(), SetMaxContactTorque(), SetJointInertiaScale(), and SyncWithPositioner() to rdk::Robot.
  • Add new methods projects_list(), UploadProject() (#124), and DownloadProject() to rdk::FileIO.
  • Add input parameter velocity to Robot::SendCartesianMotionForce() (#135).
  • Add new test test_repeated_instantiation.
  • Add new build type MinSizeRel.
  • Add building on Ubuntu 24.04 to github workflow.

CHANGE

  • Upgrade the online trajectory generator used by non-real-time joint control modes, resulting in the removal of input parameter accelerations of Robot::SendJointPosition().
  • Upgrade linked Eigen version to v3.4.0, update the QNX patch accordingly.
  • Upgrade linked Fast-DDS version to v2.6.10.
  • Change exception type of Model::J() and Model::dJ() from std::out_of_range to std::invalid_argument.
  • Remove deprecated Robot::SetDigitalOutputs() overloading.
  • Check if the input parameters max_vel and max_acc of Robot::SendJointPosition() are positive numbers.
  • Increase file transfer max size to 1 MB.
  • Improve API docs.
  • Add Important Notice section to README.
  • Update thirdparty build scripts to clone into a branch directly.
  • Remove git-tracked static libraries. The library is now downloaded when configuring CMake.
  • Add reference hash values to check the downloaded library.
  • Add CMake option to support ROS2 Jazzy.

FIX

  • Fix bug in rdk::Safety: exclude external axes from safety settings.
  • Fix malloc fault when destructing rdk::Robot (#111).
  • Fix Robot::SetNullSpacePosture() no response (#125).
  • Fix server crash upon sending a primitive command that uses any work coordinate (#132).

v1.7

09 Jul 02:34
150e9f8

Choose a tag to compare

COMPATIBILITY

  • Flexiv software package v3.9

ADD

  • Add constructor parameter verbose to rdk::Robot to enable or disable info and warning prints globally for the class.
  • Add rdk::RobotEvent struct to data.hpp that contains information about a robot event.
  • Add RobotInfo::DoF_e and DoF_m to represent the joint-space degrees of freedom of the external axes and the robot manipulator respectively.
  • Add Robot::LockExternalAxes() to lock or unlock external axes (if any) during primitive execution, direct joint control, and direct Cartesian control modes.
  • Add FileIO::traj_files_list() and FileIO::DownloadTrajFile().
  • Add new control mode NRT_SUPER_PRIMITIVE to run super primitives, i.e. composite tasks that consist of various components like motion, force, vision, planning, etc.
  • Add Model::configuration_score() to get the score of the robot's current configuration (posture), calculated from the manipulability measurements and can be used to indicate singularity.
  • Add Tool::CalibratePayloadParams() to calibrate the payload parameters (mass, CoM, and inertia) of a tool.
  • Add warning notes to rdk::Safety functions.
  • Define DeviceParamDataTypes alias in device.hpp.
  • Add URDF and mesh files for Rizon 4M (medical version).
  • Add URDF and mesh files for Rizon 4R (mirrored version).

CHANGE

  • RobotInfo::DoF now represents the total degrees of freedom of the whole system, including external axes (if any) and the robot manipulator.
  • Remove RobotStates::q_e, dq_e, and tau_e. They are now merged into q, dq, and tau.
  • Remove IDLE mode requirement for functions in rdk::FileIO.
  • Remove the optional input parameter properties from Robot::ExecutePrimitive(), update examples accordingly. If you are using the property lockExternalAxes, please change to use the newly added Robot::LockExternalAxes().
  • Remove const specifier from the value copy returned by any function. This helps with semantics-based compiler optimization.
  • Replace Robot::mu_log() with Robot::event_log().
  • Remove the optional input parameter verbose from Robot::operational(), the printed information is already included in Robot::operational_status().
  • Remove warning print from Robot::RunAutoRecovery() if the robot is currently not in recovery mode.
  • Change std::logic_error to std::invalid_argument for rdk::Device functions if the specified device does not exist.
  • Change std::logic_error to std::invalid_argument for rdk::Gripper functions if the specified gripper does not exist.
  • Change std::logic_error to std::invalid_argument for rdk::Tool functions if the specified tool does not exist.
  • Change std::logic_error to std::invalid_argument for rdk::WorkCoord functions if the specified work coordinate does not exist.
  • Change std::logic_error to std::invalid_argument for Robot::SetGlobalVariables() if any of the specified global variables does not exist.
  • Change the default values of input parameter Z_q of Robot::SetJointImpedance() from a vector of 0.7 to an empty vector.
  • Change Robot::Enable() to throw exception instead of print warning message if E-stop is not released yet.
  • Change Gripper::Grasp() and Gripper::Move() to throw exception instead of quietly saturate if any input parameter is outside its valid range.
  • Change the input parameter force_limit of Gripper::Move() from optional to mandatory.
  • Overload Robot::SetDigitalOutputs() with a new version that takes in an std::map input parameter. Also mark the old version as deprecated.
  • Rename members in rdk::JPos and rdk::Coord.
  • Update and rename URDF of Rizon 4, Rizon 4s, Rizon 10, and Rizon 10s, removed fields.
  • Update usage of the ZeroFTSensor primitive in examples.

FIX

  • Fix bug where the kinematic calibration result is not included when calling Model::SyncURDF() (#82).
  • Add missing .mtl material files corresponding to the .obj mesh files.
  • Fix various corrupted link7.obj mesh files.
  • Fix occasional error "[flexiv::rdk::Robot::SwitchMode] Failed to transit the robot into specified control mode".

v1.6

09 Jan 20:28
7a042e3

Choose a tag to compare

COMPATIBILITY

  • Flexiv software package v3.8

ADD

  • Add new API rdk::Maintenance (#62).
  • Add new API rdk::Safety (#85).
  • Add GripperStates::is_moving.
  • Add Gripper::Enable() and Gripper::Disable().
  • Add Gripper::params() and rdk::GripperParams struct accordingly.
  • Add Device::params().
  • Add bool type to the input variant of Device::Command().
  • Overload utility::Rad2Deg().

CHANGE

  • Remove Python libs and related contents from CMakeLists.txt, flexivrdk can now be installed directly using pip: https://pypi.org/project/flexivrdk/ (#88).
  • Remove Gripper::moving(), replaced by GripperStates::is_moving.
  • Remove GripperStates::max_width, replaced by GripperParams::max_width.
  • Remove deprecated functions that were marked to be removed in this release.
  • Remove RobotStates::tcp_pose_des, this data is now covered by Flexiv DDK.
  • Update gripper control examples with new API usage.
  • Update program arguments documentation in all examples.
  • Move definition of rdk::ToolParams struct from data.hpp to tool.hpp, the scope is not changed.
  • Move definition of rdk::GripperParams struct and rdk::GripperStates struct from data.hpp to gripper.hpp.
  • Update README.

FIX

  • Fix Gripper::Init() bug (#90).
  • Fix Robot::enabling_button_pressed() bug (#89).
  • Fix Cartesian motion force control examples.
  • Use CMAKE_PREFIX_PATH to specify where to find flexiv_rdk from user programs (#91).

v1.5.1

06 Dec 18:56
cd79902

Choose a tag to compare

COMPATIBILITY

  • Flexiv software package v3.7.1

ADD

  • Expose read/write of the two pairs of digital input/output ports inside the robot's wrist connector.
  • Add input parameter network_interface_whitelist to rdk::Robot constructor to allow limiting the network interface(s) that can be used for establishing connection with the robot.
  • Add input parameter properties to Robot::ExecutePrimitive().
  • Add struct JPos to represent the customized data type JPOS in Flexiv Elements. Update examples accordingly.

CHANGE

  • Remove linking to fastcdr, not needed.
  • Use shared steps in GitHub workflow.
  • Use GitHub-hosted runner for macOS workflow jobs.
  • Improve resource efficiency of background communication services.
  • Update README.

FIX

  • Fix definition for member of rdk::Coord struct.
  • Fix a bug that causes occasional "Failed to sync server version" error when trying to establish connection with the robot.

v1.5

13 Nov 18:44

Choose a tag to compare

COMPATIBILITY

  • Flexiv software package v3.7

ADD

  • Add support to use Cartesian motion-force control modes with the Moonlight delta robot.
  • Add an overload of Robot::SetGlobalVariables() that takes in an std::map instead of a long string. The old version will be deprecated.
  • Add an overload of Robot::global_variables() that returns an std::map instead of a string list. The old version will be deprecated.
  • Add an overload of Robot::ExecutePrimitive() that takes in an std::map instead of long sting. The old version will be deprecated.
  • Add an overload of Robot::primitive_states() that returns an std::map instead of a string list. The old version will be deprecated.
  • Add type alias FlexivDataTypes to represent a variant that holds all possible types of data exchanged with Flexiv robots using the new overloaded functions above.
  • Add utility::FlexivTypes2Str() to convert data held in FlexivDataTypes to a single string.
  • Add rdk::Coord struct to be used with FlexivDataTypes variant.
  • Add function Robot::SetNullSpaceObjectives() to set weights of the three optimization objectives while computing the robot's null-space posture.
  • Add API flexiv::rdk::WorkCoord to online update and interact with the robot's work coordinates (#58, #66).
  • Add enum rdk::CoordType to represent commonly-used reference coordinates.
  • Add Robot::operational_status() with enum return type (#67, #81).
  • Add Robot::reduced() to check for safety system's reduced state (#67).
  • Add new input parameter block_until_started to Robot::ExecutePlan() and Robot::ExecutePrimitive() (#76).
  • Add input parameter velocity to Robot::StreamCartesianMotionForce() so users have the option to improve the robot's tracking performance at the cost of reduced robustness or vice versa.
  • Add Device::exist() to check if the specified device exists.
  • Add Model::SyncURDF() to cync the actual kinematic parameters of the connected robot into the template URDF (#82).
  • Add RobotInfo::license_type.
  • Add external axes states to RobotStates.
  • Add RobotStates::ext_wrench_in_tcp_raw and RobotStates::ext_wrench_in_world_raw that contain unfiltered external wrench data.
  • Add C++ and Python examples for global variable functions.
  • Add urgency scale to feature request template.

CHANGE

  • Allow Robot::SetGlobalVariables() to be called in any control mode instead of only in NRT_PLAN_EXECUTION mode.
  • Change Robot::SetCartesianImpedance() to blocking, and the robot will not reset to nominal Cartesian impedance upon re-entering the applicable control modes; the setting will persist.
  • Remove Robot::ResetCartesianImpedance(), the user has enough info to reset the impedance using Robot::SetCartesianImpedance().
  • Change Robot::SetJointImpedance() to blocking, and the robot will not reset to nominal joint impedance upon re-entering the applicable control modes; the setting will persist.
  • Remove Robot::ResetJointImpedance(), the user has enough info to reset the impedance using Robot::SetJointImpedance().
  • Change Robot::SetMaxContactWrench() to blocking, and the robot will not reset to disable contact wrench regulation upon re-entering the applicable control modes; the setting will persist.
  • Remove Robot::ResetMaxContactWrench(), the user has enough info to disable contact wrench regulation using Robot::SetMaxContactWrench().
  • Change Robot::SetNullSpacePosture() to blocking.
  • Remove Robot::ResetNullSpacePosture(), the user has enough info to reset to initial reference positions using Robot::SetNullSpacePosture().
  • Change Robot::SetForceControlAxis() to blocking, and allow it to be called when in motion force-control modes.
  • Change Robot::SetForceControlFrame() to blocking, and allow it to be called when in motion force-control modes.
  • Support setting a user-defined arbitrary force control frame with regard to either WORLD or TCP frame using Robot::SetForceControlFrame() (#78).
  • Change Robot::SetPassiveForceControl() to blocking.
  • Flip the force command direction in motion-force control modes to make the behavior consistent with Flexiv Elements.
  • Throw exception in Tool::Add(), Tool::Switch(), Tool::Update(), Tool::Remove(), and Tool::params() if the specified tool does not exist.
  • Throw exception in Device::Enable(), Device::Disable(), and Device::Command() if the specified device does not exist.
  • Throw exception in Device::Command() if the commanded device is not enabled.
  • Device::Command() uses variant to represent command values.
  • Remove mandatory blocking of Gripper::Init(), user needs to implement the wait accordingly.
  • Change enum Mode to scoped enum class Mode.
  • Use Robot::SetDigitalOutputs() to deprecate WriteDigitalOutput().
  • Use Robot::digital_inputs() to deprecate ReadDigitalInput().
  • Remove utility::ParsePtStates(), no longer needed.
  • The "Home" primitive now does not terminate by itself, thus change termination check condition from busy() == false to reachedTarget == true.
  • Update warning doc of Robot::ExecutePrimitive() about primitives' self-termination.
  • Internal plans (those not created by user) now cannot be resumed from pause due to safety concerns.
  • Remove input parameter trailing_space from utility::Vec2Str() and Arr2Str().
  • Change the term "preferred positions" to "reference positions" to be consistent with Flexiv Elements.
  • Decrease the nominal rotation stiffness from 3000 to 1500 Nm/rad for Rizon 4 variants and from 6000 to 3000 Nm/rad for Rizon 10 varients due to stability concerns.
  • Remove excessive prints.
  • Update API usages in examples.
  • Update website links.

FIX

  • Fix cmake/FlexivInstallLibrary.cmake that exports the wrong project version.
  • Specify -DCMAKE_PREFIX_PATH in thirdparty build scripts so they don't accidentally link to existing dependencies in system path.
  • Fix connection loss with the robot when network condition is bad.
  • Fix the issue where spdlog's log level is not reset when the construction of rdk::Robot is incomplete.

v1.4

15 Jul 19:28
7f020e6

Choose a tag to compare

NOTE

This release note is based on changes since v1.3. If you are switching from v0.x to v1.x for the first time, you might want to review all release notes since the v1.0 pre-release,

COMPATIBILITY

  • Flexiv software package v3.6

ADD

  • Add sub-namespace: flexiv:: now becomes flexiv::rdk::.
  • Add support for Rizon medical model Rizon4M.
  • Add support for the force-controlled delta robot Moonlight.
  • Add support of flexiv::rdk::Model API for Python RDK. Add intermediate5_robot_dynamics.py example accordingly.
  • Add installation of Python RDK libraries to the user site packages path, using CMake. Remove sys.path.insert() from Python examples accordingly.
  • Add RobotInfo::K_q_nom, nominal motion stiffness of the joint impedance control modes of the connected robot.
  • Add RobotInfo::model_name, model name of the connected robot, e.g. Rizon4, Rizon10, Moonlight, etc.
  • Add RobotInfo::DoF, joint-space degrees of freedom of the connected robot. Remove kJointDOF constant accordingly. The joint DoF now varies according to the model of the connected robot. Update examples accordingly.
  • Add real-time joint impedance (RT_JOINT_IMPEDANCE) and non-real-time joint impedance (NRT_JOINT_IMPEDANCE) control modes. Add intermediate2_realtime_joint_impedance_control.cpp and intermediate2_non_realtime_joint_impedance_control.py examples accordingly.
  • Add Robot::SetJointImpedance() and Robot::ResetJointImpedance() that sets and resets stiffness and damping ratio of the robot's joint motion controller used in the joint impedance control modes.
  • Add Robot::Brake() to force engaging or releasing robot brakes during normal operation. Only available to the medical model.
  • Add Model::reachable() to check reachability of a given Cartesian pose and return the corresponding IK solution if reachable.
  • Add error code prefix to Robot Log messages.
  • Add new dependency spdlog to replace the flexiv::Log API. Update examples and tests accordingly.
  • Add new C++ example to show how to change logging behavior of RDK client, as well as how to log to file.
  • Add input parameter separator to utility::Arr2Str().
  • Add utility::Vec2Str().

CHANGE

  • Change header file extension from .h to .hpp to prevent C++ IntelliSense tool from mistaking certain system headers for RDK headers.
  • To accommodate the newly added support of the Moonlight delta robot, change joint-space variables in RobotInfo and RobotStates data structures from fixed-size arrays to dynamic-size vectors. Also change input arrays of Robot::StreamJointTorque(), Robot::StreamJointPosition(), Robot::SendJointPosition(), Robot::SetJointImpedance(), Robot::SetNullSpacePosture(), and Model::Update() to vectors. Update examples accordingly.
  • Rename RobotInfo::nominal_K to RobotInfo::K_x_nom.
  • Update function documentation of Robot::StreamJointPosition() and Robot::SendJointPosition() to include joint impedance control modes.
  • Change Robot::SetCartesianStiffness() to Robot::SetCartesianImpedance() and Robot::ResetCartesianStiffness() to Robot::ResetCartesianImpedance(). Cartesian motion damping ratio is added as a new input parameter. Update examples accordingly.
  • Rename kCartDOF to kCartDoF. Update examples accordingly.
  • Update Robot::ClearFault() to support clearing critical robot faults, if the hardware for hot-reset is installed.
  • Increase nominal Cartesian stiffness of Rizon 4 series from [10000-1000] to [10000-2500], and Rizon 10 series from [20000-2000] to [20000-6000].
  • Greatly reduce blocking time of Robot::ExecutePrimitive(), Robot::ExecutePlan(), Robot::SwitchMode(), and Tool:: functions.
  • Use pip installed spdlog in Python examples.
  • Merge PrintDescription() to main() in all examples.
  • Change maxVel= to vel= in primitive execution examples.
  • Use f-string formatting in Python examples.
  • Upgrade doc/Doxyfile.in.
  • Improve function documentations.
  • Improve README.
  • Improve dependencies build script.

FIX

  • Fix Robot::global_variables() does not return updated values if called immediately after Robot::SetGlobalVariables().
  • Fix a bug where re-switching control mode before sending commands is not enforced after disconnected then reconnected with the robot.
  • Fix a bug in test/test_dynamics_engine.cpp.
  • Fix keyboard interruption handling for Python examples.
  • Fix compatibility issue with Eigen for Python 3.12 libraries.

v0.10

30 Apr 17:49
06b38ad

Choose a tag to compare

COMPATIBILITY

  • Flexiv software package v2.11.5

ADD

(None)

CHANGE

  • Change the behavior of Robot::setNullSpacePosture(). Before: null-space posture will be reset to default upon entering the applicable control modes. Now: null-space posture will maintain the current posture upon entering the applicable control modes (#45).
  • Provide explicit safe values for the input parameters of Robot::sendCartesianMotionForce().
  • Increase nominal Cartesian stiffness of Rizon 4 and its variants from [linear: 6000 N/m, angular: 400 Nm/rad] to [linear: 10000 N/m, angular: 1000 Nm/rad].
  • Increase nominal Cartesian stiffness of Rizon 10 and its variants from [linear: 12000 N/m, angular: 1200 Nm/rad] to [linear: 20000 N/m, angular: 2000 Nm/rad].
  • Use MSVC 14.1 (VS 2017) to compile Windows libraries (#46).
  • Improve code documentation.

FIX

  • Fix a bug in Robot::getPrimitiveStates() that has a chance to cause program crash (#47).
  • Fix a bug in Robot::switchTcp() that causes this function unable to deliver the command.

v1.3

01 Apr 18:41
c675f5f

Choose a tag to compare

v1.3 Pre-release
Pre-release

COMPATIBILITY

  • Internal pre-release

ADD

  • Add new API flexiv::Device for general device control over RDK.
  • Add Robot::mu_log() to access the multilingual log messages of the connected robot; remove Robot::getErrorMessage() accordingly.
  • Add Robot::SetVelocityScale() as a standalone function to change velocity scale during plan/primitive execution; remove velocity_scale input parameter from Robot::ExecutePlan() and Robot::ExecutePrimitive() accordingly.
  • Add input parameter acceleration to Robot::StreamCartesianMotionForce() to feed-forward target TCP acceleration.
  • Add input parameters max_linear_acc and max_angular_acc to Robot::SendCartesianMotionForce().
  • Provide explicit default values to input parameters of Robot::SendCartesianMotionForce().
  • Add bool return to Robot::ClearFault() to indicate whether the fault is cleared successfully; update usage in examples accordingly.
  • Add Gripper::moving() to replace GripperStates::isMoving.
  • Add Gripper::Init() to manually trigger gripper initialization; update gripper control examples accordingly.
  • Add string names array kModeNames for robot control modes.
  • Add more supported formats for robot SN input when constructing flexiv::Robot.

CHANGE

  • Update format requirement of input parameter with ARRAY_COORD type for Robot::ExecutePrimitive().
  • Adopt the Google C++ Style Guide globally.
  • Increase nominal Cartesian stiffness of Rizon 4/4s from 6000/400 to 10000/1000, Rizon 10/10s from 12000/1200 to 20000/2000.
  • Replace Robot::getRobotStates() with Robot::states() direct accessor.
  • Replace Robot::getMode() with Robot::mode() direct accessor.
  • Replace Robot::getPlanNameList() with Robot::plan_list() direct accessor.
  • Replace Robot::getPlanInfo() with Robot::plan_info() direct accessor.
  • Replace Robot::getGlobalVariables() with Robot::global_variables() direct accessor.
  • Replace Robot::getPrimitiveStates() with Robot::primitive_states() direct accessor.
  • Rename Gripper::getGripperStates() to Gripper::states().
  • Rename Tool::switchTo() to Tool::Switch().
  • Rename Tool::getToolList() to Tool::list().
  • Rename Tool::getCurrentToolName() to Tool::name().
  • Rename Tool::getToolParams() to Tool::params(); add function overload for Tool::getCurrentToolParams().
  • Rename functions in flexiv::Model to math symbol representations.
  • Revert Windows action runner version to 2022 as the MSVC compatibility issue is fixed. Remove temporary warning from README accordingly.
  • Remove RobotInfo::qHome.
  • Improve API docs.
  • Update examples and tests with new function naming.
  • Bump supported Python version from 3.8/3.10 to 3.10/3.12.
  • Update .gitignore.
  • Update Windows compilation toolkit requirement in README.

FIX

  • Fix singularity bug under NRT_CARTESIAN_MOTION_FORCE control mode (#42).
  • Fix data corruption when requesting primitive states (#47).
  • Fix discontinuous null-space posture transition (#45).
  • Fix robot tool update examples.
  • Fix control mode mismatch bug in real-time control modes.
  • Upgrade Fast-DDS version to v2.6.7, this fixed the compatibility issue with MSVC v143 (Visual Studio 2022).
  • Remove incorrect comment from basics3_primitive_execution.py.

v0.9.1

06 Jan 11:26
cfe44b9

Choose a tag to compare

COMPATIBILITY

  • Flexiv software package v2.11.3

ADD

(None)

CHANGE

(None)

FIX

  • Fix a bug where the second consecutive plan execution command won't execute.

v1.2

01 Dec 22:57
6ff4790

Choose a tag to compare

v1.2 Pre-release
Pre-release

COMPATIBILITY

  • Internal pre-release

ADD

  • Add API access of flexiv::Model to Windows.
  • Add new API flexiv::Tool to online update the robot tools. Add C++ and Python examples.
  • Add ToolParams data struct to Data.hpp.
  • Add new API flexiv::FileIO to do file transfer with the robot.
  • Add Robot::setBreakpointMode() and Robot::stepBreakpoint() to do breakpoint control when executing plans.
  • Add PlanInfo::waitingForStep variable to indicate breakpoint status.
  • Add more generic Cartesian motion-force control modes RT/NRT_CARTESIAN_MOTION_FORCE to replace the old ones which are RT/NRT_CARTESIAN_MOTION_FORCE_TCP and RT/NRT_CARTESIAN_MOTION_FORCE_BASE.
  • Add functions to configure force control parameters for the new Cartesian motion-force control modes: Robot::setForceControlAxis(), Robot::setForceControlFrame(), and Robot::setPassiveForceControl().
  • Add behavior description to the function doc of Robot::sendJointPosition().
  • Add input parameter continueExec to Robot::executePlan() to specify whether to continue executing the plan when the RDK program is closed or the connection is lost. Set this parameter to true in the plan execution examples.
  • Add Robot::isEnablingButtonPressed() to check if the enabling button on the robot motion bar is pressed.
  • Add Robot::getErrorMessage() to get error message if the robot is in fault state.
  • Add Model::reload() to sync the latest robot model and tool model data from the connected robot.
  • Add Scheduler::minPriority() to get the OS' minimum available priority for user tasks.
  • Add check on user-specified task priority against the OS' minimum available priority to Scheduler::addTask().
  • Add [Blocking] or [Non-blocking] tag to function doc.
  • Overload Gripper::getGripperStates() with a variant that directly returns GripperStates data struct.
  • Overload Robot::getRobotStates() with a variant that directly returns RobotStates data struct.
  • Add GitHub workflow for macOS build.

CHANGE

  • Split RDK license to Standard license and Professional license. The standard license provides access to essential and non-real-time functionalities such as reading robot states, sending plan/primitive commands, etc. The professional license provides access to everything included with the standard license, plus robot dynamics and real-time functionalities such as joint torque/position streaming, Cartesian motion/force streaming, etc.
  • Change Robot::streamCartesianMotionForce() and Robot::sendCartesianMotionForce() to use the same controller as MoveHybrid primitive. Update Cartesian motion-force control examples accordingly.
  • Change Robot::getPlanInfo() to return PlanInfo data struct directly.
  • Change the term "base" to "world" when referring to the robot's global coordinate.
  • Change RobotStates::extWrenchInBase to RobotStates::extWrenchInWorld.
  • Make the effect of Robot::setNullSpacePosture() persistent: not resetting preferred joint positions to nominal when switching modes.
  • Remove input parameter isBlocking from Scheduler::start(), the user should implement their own blocking from the calling thread if needed. Update examples accordingly.
  • Remove check on elapsed waiting time of Robot::isOperational() from the examples.
  • Remove RobotStates::camPose: the ownership of camera pose is transferred to Noema AI system.
  • Merge test_dynamics_with_tool into test_dynamics_engine.
  • Improve function docs.
  • Remove Ubuntu 18.04 from supported OS list.
  • Rename C++ libs to the same pattern as the Python libs.
  • Format Python examples using Black Formatter.
  • Update MSVC compatible version in README.

FIX

  • Fix a root link bug in flexiv::Model.
  • Fix memory leak of flexiv::Scheduler.
  • Fix initial timer fluctuation of flexiv::Scheduler.
  • Fix Robot::runAutoRecovery().