Releases: flexivrobotics/flexiv_rdk
Releases · flexivrobotics/flexiv_rdk
v0.8
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
andRT_CARTESIAN_MOTION_FORCE_TCP
. For non-real-time access, use modesNRT_CARTESIAN_MOTION_FORCE_BASE
andNRT_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 methodRobot::streamCartesianMotionForce()
. - Replace
Robot::sendTcpPose()
with newly added motion-force control methodRobot::sendCartesianMotionForce()
. - Replace
Robot::executePlanByIndex()
andRobot::executePlanByName()
with overloaded functionRobot::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 withRT_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 usingRobot::getMode()
from examples. - Rename
StatesData.hpp
toData.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
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
andLogicException
. - Add
flexiv::GripperStates
struct and corresponding output stream operator<<
toStatesData.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
<<
forflexiv::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()
toScheduler::numTasks()
. - Rename
RobotStates::extForceInTcpFrame
toRobotStates::extWrenchInTcp
. - Rename
RobotStates::extForceInBaseFrame
toRobotStates::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
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
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
toGripper::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()
andRobot::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 inStatesData.hpp
. - Remove
Robot::isTimeout()
, connection quality is auto-handled. - Remove
Robot::getSystemStatus()
, also removeSystemStatus
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 parametermaxWrench
to specify maximum contact wrench during operation. - Change input parameter
maxWrench
ofRobot::sendTcpPose()
to optional. - Change the output parameter of
Robot::getRobotStates()
andRobot::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 toresources
. - 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
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
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
toStatesData.hpp
. - Rename
flexiv::Visualization::update()
toflexiv::Visualization::updateRobot()
. - Remove
flexiv::Robot::loadModel()
: replaced by the constructor offlexiv::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 methodflexiv::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 thefmt
library.
v0.4.0
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 modeflexiv::Mode::MODE_JOINT_POSITION_NRT
- New Cartesian-space non-real-time API
flexiv::Robot::sendTcpPose()
, activated with new robot modeflexiv::Mode::MODE_CARTESIAN_IMPEDANCE_NRT
CHANGE
- Rename API
flexiv::Robot::timeout()
toisTimeout()
- Rename struct member
flexiv::SystemStatus::m_jntLimitTriggered
tom_jointLimitTriggered
- Simplify example
auto_recovery
FIX
- A bug in example
robot_dynamics
that might block the state transition
v0.3.1
COMPATIBILITY
- Flexiv robot software v2.8
ADD
- Loop latency benchmark test
CHANGE
- Remove
m_reachedReady
fromflexiv::SystemStatus
struct - Update ground truth in dynamics engine tests
- Remove
example/tool
directory
FIX
(None)
v0.3.0
COMPATIBILITY
- Flexiv robot software v2.8 pre-release
ADD
flexiv::Log
class to print info, warning, and error messages with timestamp and coloringflexiv::Visualization
class to use the integrated Meshcat-based visualization- Derivative of joint torques
m_tauDot
toflexiv::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
<<
forflexiv::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
fromflexiv::RobotStates
struct - Replace IP address configuration using
config.h
with program arguments - Replace message print using
std::iostream
withflexiv::Log
- Remove
flexiv::Model::Frame
enum,flexiv::Model::getJacobian()
andgetJacobianDot()
now uses link name string as input parameter - Rename
urdf/
directory tospec/
- 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
COMPATIBILITY
- Flexiv robot software v2.7
ADD
Initial public release.