You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
COMPATIBILITY
Flexiv software package v3.11.3
ADD
Add NetworkPort enum and PtpConfig struct to maintenance.hpp.
Add Maintenance::SetPtpConfig() and Maintenance::ptp_config() to configure the PTP (Precision Time Protocol) clock synchronization client on the control box. A control box reboot is required for a new configuration to take effect.
Add member duration to NrtCartesianCmd struct, and a matching input parameter to its constructor, to specify the desired time to reach each waypoint in Robot::SendMultiCartesianMotionForce().
Add RDK_API export macro (export.hpp) to the public headers.
Add thread-safety notes to the API documentation of all public classes and headers.
Add a CI check that the prebuilt library has no runtime dependencies beyond the OS C/C++ runtime.
Add type stubs (.pyi) to the flexivrdk Python package for code completion, signature hints, and type checking in IDEs.
CHANGE
Ship RDK as a self-contained shared library (.so / .dylib / .dll) instead of a static library. All thirdparty dependencies except Eigen are statically embedded and their symbols hidden, so user applications no longer need to build Flexiv's dependency stack and can use their own versions of Fast-DDS, Boost, spdlog, yaml-cpp, tinyxml2, etc. without symbol collision (#196, #203).
Eigen is now the only dependency built by thirdparty/build_and_install_dependencies.sh, and the only one required by find_package(flexiv_rdk) besides Threads.
Ship the Windows library as a DLL: flexiv_rdk.win_amd64.dll is now downloaded together with the import library flexiv_rdk.win_amd64.lib, and must be discoverable via PATH at runtime.
Reduce the size of the released library by about a third.
Upgrade the embedded Fast-DDS to v2.6.12 and Fast-CDR to v1.0.29, which fix a number of security vulnerabilities (CVEs) reachable in RDK.
Upgrade the embedded RBDyn to v1.9.5 and SpaceVecAlg to v1.2.10.
Replace spdlog with a built-in logger. spdlog is no longer a dependency.
Change Scheduler::Start() and Scheduler::Stop() to be non-blocking. Task threads are now created by Scheduler::AddTask() and stay alive until the scheduler is destroyed, and Scheduler::Stop() can now be called from within a task thread.
Update examples and tests to print messages through the standard output streams instead of spdlog. Rewrite basics10_logging_behavior accordingly.
Remove the ROS 2 Jazzy build variant, including the RDK_SUPPORT_ROS2_JAZZY CMake option and thirdparty/build_and_install_dependencies_not_in_ros2.sh. The self-contained shared library can be used alongside any ROS 2 distribution.
Document that entering fault state resets the control mode to IDLE and discards all commands sent so far, so Robot::SwitchMode() must be called again after the fault is cleared. This also applies to plans executed with continue_exec enabled.
Update README with Windows bash emulator instructions and the new library packaging.
Rename the compiled module of the flexivrdk Python package to _flexivrdk. The package is still imported as flexivrdk, but code accessing the module directly via flexivrdk.flexivrdk needs to be updated.
FIX
Fix motion commands of the previous control mode being applied as the first setpoint of the next one when switching control modes while commands are being streamed.
Fix interleaved and half-written motion commands when streaming from multiple threads concurrently (#198).
Make all functions in rdk::Gripper thread-safe (#198).
Make Robot::SetTimelinessFailureLimit() thread-safe (#198).
Fix potential crash when destroying rdk::Robot while a subscriber callback is still running.
Fix unintended OpenSSL runtime dependency of the macOS library (#203).
Fix Model.T() in Python failing to convert its return value. It now returns the 4x4 homogeneous transformation matrix as a numpy array.
Fix RobotEvent.timestamp in Python having no Python type conversion. It now maps to datetime.datetime.
Fix Python signatures of the classes constructed from a Robot instance showing the raw C++ type instead of Robot.