Skip to content

v1.5

Compare
Choose a tag to compare
@pzhu-flexiv pzhu-flexiv released this 13 Nov 18:44

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.