Skip to content

Releases: flexivrobotics/flexiv_rdk

v0.8

02 May 21:03
a9931cb
Compare
Choose a tag to compare

COMPATIBILITY

  • Flexiv robot software v2.10.5

ADD

  • Add new API for Cartesian unified motion-force control in base or TCP frame. For real-time access, use modes RT_CARTESIAN_MOTION_FORCE_BASE and RT_CARTESIAN_MOTION_FORCE_TCP. For non-real-time access, use modes NRT_CARTESIAN_MOTION_FORCE_BASE and NRT_CARTESIAN_MOTION_FORCE_TCP.
  • Add real-time and non-real-time examples for the new motion-force control mode.
  • Add new method Robot::info() to access general information of the robot.
  • Add new method Robot::pausePlan() to pause or resume the execution of the current plan.

CHANGE

  • Replace Robot::streamTcpPose() with newly added motion-force control method Robot::streamCartesianMotionForce().
  • Replace Robot::sendTcpPose() with newly added motion-force control method Robot::sendCartesianMotionForce().
  • Replace Robot::executePlanByIndex() and Robot::executePlanByName() with overloaded function Robot::executePlan().
  • Remove contact_control examples, replace with direct motion force control examples.
  • Remove series_operation examples, no longer relevant.
  • Replace RT_cartesian_impedance_control example with RT_cartesian_pure_motion_control example, using the newly added motion-force control API.
  • Add blocking check on whether the desired mode is successfully set to Robot::setMode(). Remove manual check using Robot::getMode() from examples.
  • Rename StatesData.hpp to Data.hpp.
  • Update enums naming of flexiv::Mode.
  • Update Robot::setCartesianStiffness() to reset to default values based on detected robot model.
  • Update Robot::setNullSpacePosture() to reset to default values based on detected robot model.
  • Update README.
  • Re-organize examples into basic and intermediate tutorials.

FIX

  • Improve server-client compatibility check.
  • Minor fixes to examples.

v0.7

11 Jan 22:53
b3e2f6c
Compare
Choose a tag to compare

COMPATIBILITY

  • Flexiv robot software v2.10.3 and v2.10.4

ADD

  • Add GitHub action for Windows.
  • Add support for Python 3.10.
  • Add support for the real-time scheduler flexiv::Scheduler on macOS.
  • Add support for setting CPU affinity in flexiv::Scheduler.
  • Add Scheduler::maxPriority() to get the maximum available priority for the user task under the current system.
  • Add contact control C++ and Python example.
  • Add new exception types: ClientException and LogicException.
  • Add flexiv::GripperStates struct and corresponding output stream operator << to StatesData.hpp: the general gripper feedback states, update examples accordingly.
  • Add Gripper::getGripperStates() to request the latest gripper states from robot server, update examples accordingly.
  • Add Robot::setNullSpacePosture() to do null-space posture control during Cartesian control modes, update examples accordingly.
  • Add detailed description to items in flexiv::RobotStates struct.
  • Add RobotStates::ftSensorRaw: the raw reading from the end-effector force-torque (FT) sensor, if available.
  • Add output stream operator << for flexiv::PlanInfo struct.
  • Add URDF and mesh files for Rizon 10 robot arm.
  • Add DAE format visual mesh files.

CHANGE

  • Remove flexiv::Visualization and related contents: users now need to use their own visualization methods.
  • Remove RobotStates::endLinkPose.
  • Improve API docs.
  • Improve the performance, compatibility, and stability of flexiv::Scheduler.
  • Rename Scheduler::getTaskCount() to Scheduler::numTasks().
  • Rename RobotStates::extForceInTcpFrame to RobotStates::extWrenchInTcp.
  • Rename RobotStates::extForceInBaseFrame to RobotStates::extWrenchInBase.
  • Update all examples to pass by (const) reference.
  • Update primitive execution examples to demonstrate how to express target coordinate in TCP frame.
  • Update the constructor of flexiv::Gripper to pass by const reference.
  • Update the constructor of flexiv::Model to pass by const reference.
  • Update Robot::isBusy() to also cover primitives that can auto-terminate upon completion (some primitives won't auto-terminate upon completion, for example, the [Move] series).
  • Update CMakeLists to auto-detect OS and processor type.
  • Update README.

FIX

  • Fix a bug in series operation example where the specified plan no longer exists.
  • Fix a bug where Robot::setGlobalVariables() can be used in other modes other than the plan execution mode.
  • Fix a bug where Robot::setGlobalVariables() returns too soon and the processing may have not fully completed.

v0.6.1

03 Oct 02:40
c44b184
Compare
Choose a tag to compare

COMPATIBILITY

  • Flexiv robot software v2.10.1 and v2.10.2

ADD

  • Add GitHub workflow for Ubuntu 22.04.

CHANGE

  • Remove Robot::setSwivelAngle(): the swivel angle-based robot posture control is now replaced by the null space optimization-based posture control.
  • Remove contents related to Robot::setSwivelAngle() from examples.
  • Make all flexiv::utility methods explicit inline.

FIX

  • None

v0.6

17 Aug 05:56
45708b2
Compare
Choose a tag to compare

COMPATIBILITY

  • Flexiv robot software v2.10

ADD

  • Add ROS2 support, see flexiv_ros2.
  • Add C++ and Python support for macOS.
  • Add Python support for Windows.
  • Add new parameter forceLimit to Gripper::move() to specify max gripping force.
  • Add Robot::isBusy() to check if the robot is currently executing a task.
  • Add Robot::isEstopReleased() to check if E-stop is released.
  • Add check on the size of input string of Robot::executePrimitive(), cannot exceed 5kb.
  • Add Robot::setGlobalVariables() and Robot::getGlobalVariables() to interact with the robot system's global variables.
  • Add flexiv::utility namespace with useful helper functions.
  • Add Visualization::updateScene() function overloading to update the color of a specified object in the scene.

CHANGE

  • Change the C++ interface to a unified modern CMake project that can be installed and linked to as a CMake target package on all supported OS.
  • Remove Windows Visual Studio project and solution file, replaced by the unified CMake framework.
  • Remove m_ prefix for struct members in StatesData.hpp.
  • Remove Robot::isTimeout(), connection quality is auto-handled.
  • Remove Robot::getSystemStatus(), also remove SystemStatus data struct, the members are either outdated or handled by dedicated API methods.
  • Change input parameters of Robot::streamTcpPose(): remove target velocity and acceleration to guarantee a passive impedance behavior; add optional parameter maxWrench to specify maximum contact wrench during operation.
  • Change input parameter maxWrench of Robot::sendTcpPose() to optional.
  • Change the output parameter of Robot::getRobotStates() and Robot::getPlanInfo () from pass by pointer to pass by reference.
  • Increase the maximum size of input string of Robot::executePrimitive() from 1kb to 5kb.
  • Re-organize C++ and Python libraries, add system and processor identifiers.
  • Rename spec folder to resources.
  • Improve API docs.
  • Improve examples.
  • Update README with compilation quick start for all supported OS.

FIX

  • A command execution bug in the primitive execution mode.

v0.5.1

29 Apr 11:07
0b9d3fe
Compare
Choose a tag to compare

COMPATIBILITY

  • Flexiv robot software v2.9

ADD

  • Static RDK libraries for Windows on x64 and x86 processor platforms.
  • Example Visual Studio projects that link to the static libraries.

CHANGE

  • Re-organize lib/ directory: group libraries by OS, programming language, and processor platform.

FIX

  • A bug that caused delay in the execution of a primitive command.

v0.5.0

13 Apr 15:53
10a57dc
Compare
Choose a tag to compare

COMPATIBILITY

  • Flexiv robot software v2.9

ADD

  • C++ and Python library for arm64 processors.
  • flexiv::Scheduler class for users to add and run periodic tasks with user-defined interval and priority. Update all examples with this scheduler.
  • flexiv::Exception class that contains customized exceptions thrown by RDK's APIs. Update all examples with exception handling.
  • flexiv::Gripper class to control grippers that use the communication protocol template provided by Flexiv.
  • flexiv::Robot::setCartesianStiffness() to online change the stiffness of the Cartesian impedance controller during Cartesian impedance modes.
  • flexiv::Robot::setSwivelAngle() to online change the robot arm's elbow swivel angle during Cartesian impedance modes.
  • flexiv::Visualization::updateScene() to update position of objects added to the visualizer scene.
  • Default initialization for all members in StatesData.hpp.
  • New example: clear minor fault on robot server.
  • New example: gripper control.
  • Fault check of robot server to all examples.

CHANGE

  • Move all header files to flexiv sub-directory.
  • Replace error return of all methods with customized exception defined in flexiv::Exception.
  • Merge flexiv::Robot::Init() with its class constructor.
  • Merge flexiv::Visualization::Init() with its class constructor.
  • Change flexiv::Robot::readDigitalInput() to output result through function return instead of an output pointer parameter.
  • Rename RobotStates.hpp to StatesData.hpp.
  • Rename flexiv::Visualization::update() to flexiv::Visualization::updateRobot().
  • Remove flexiv::Robot::loadModel(): replaced by the constructor of flexiv::Model.
  • Remove flexiv::SystemStatus::m_motionCmdSuccessRate: no longer useful.
  • Remove flexiv::SystemStatus::m_errorMsg: accurate error message can be found on the UI tablet.
  • Remove flexiv::SystemStatus::m_ptStates: replaced with a dedicated method flexiv::Robot::getPrimitiveStates().
  • Remove flexiv::Model::setTool(), the tool dynamics update is now automated.
  • Remove unnecessary smart pointers from all examples.
  • Replace unnecessary heap allocation with stack allocation in all examples.
  • Reduce continuous network bandwidth consumption by 75%, increasing connection robustness under bad network connections.
  • Increase round-trip communication latency tolerance to 1000 ms (only for non-real-time APIs).
  • Upgrade Eigen library in thirdparty/ to 3.3.7.

FIX

  • Missing color in the provided robot URDF.
  • Compatibility issue of flexiv::Log with some versions of the fmt library.

v0.4.0

17 Jan 15:08
1865733
Compare
Choose a tag to compare

COMPATIBILITY

  • Flexiv robot software v2.8.1

ADD

  • Python (3.8) support for selected non-real-time APIs
  • Example Python scripts under example_py
  • New joint-space non-real-time API flexiv::Robot::sendJointPosition(), activated with new robot mode flexiv::Mode::MODE_JOINT_POSITION_NRT
  • New Cartesian-space non-real-time API flexiv::Robot::sendTcpPose(), activated with new robot mode flexiv::Mode::MODE_CARTESIAN_IMPEDANCE_NRT

CHANGE

  • Rename API flexiv::Robot::timeout() to isTimeout()
  • Rename struct member flexiv::SystemStatus::m_jntLimitTriggered to m_jointLimitTriggered
  • Simplify example auto_recovery

FIX

  • A bug in example robot_dynamics that might block the state transition

v0.3.1

18 Dec 00:12
a83755a
Compare
Choose a tag to compare

COMPATIBILITY

  • Flexiv robot software v2.8

ADD

  • Loop latency benchmark test

CHANGE

  • Remove m_reachedReady from flexiv::SystemStatus struct
  • Update ground truth in dynamics engine tests
  • Remove example/tool directory

FIX

(None)

v0.3.0

13 Nov 08:21
7fad19f
Compare
Choose a tag to compare
v0.3.0 Pre-release
Pre-release

COMPATIBILITY

  • Flexiv robot software v2.8 pre-release

ADD

  • flexiv::Log class to print info, warning, and error messages with timestamp and coloring
  • flexiv::Visualization class to use the integrated Meshcat-based visualization
  • Derivative of joint torques m_tauDot to flexiv::RobotStates struct
  • Latex documentation with math expressions
  • Timeliness monitor: when running in a real-time mode, a fault is triggered if the user command fails to arrive the robot within 1ms for several consecutive cycles
  • Examples for primitive execution and integrated visualization
  • Tests on timeliness monitor, robot states data integrity, RDK endurance, flexiv::Log class
  • Overloading of the ostream operator << for flexiv::RobotStates struct to easily print all robot states in JSON format
  • GitHub workflow for Ubuntu 18.04

CHANGE

  • Update README
  • Update Doxyfile
  • Rename members in flexiv::RobotStates struct to be symbol-specific
  • Remove m_tcpAcc from flexiv::RobotStates struct
  • Replace IP address configuration using config.h with program arguments
  • Replace message print using std::iostream with flexiv::Log
  • Remove flexiv::Model::Frame​ enum, flexiv::Model::getJacobian() and getJacobianDot() now uses link name string as input parameter
  • Rename urdf/ directory to spec/
  • Replace dae mesh files with stl, update URDF accordingly
  • Upgrade the timer used by the robot's state publisher for a more reliable real-time robot states publishing

FIX

  • A bug that can cause, at a very low probability, a value spike in received robot states data

v0.2.0

09 Sep 12:14
aced621
Compare
Choose a tag to compare

COMPATIBILITY

  • Flexiv robot software v2.7

ADD

Initial public release.

CHANGE

FIX