Skip to content

Release/v2.1 - #194

Merged
pzhu-flexiv merged 94 commits into
mainfrom
release/v2.1
Jun 27, 2026
Merged

pzhu-flexiv merged 94 commits into
mainfrom
release/v2.1

Conversation

@pzhu-flexiv

Copy link
Copy Markdown
Collaborator

COMPATIBILITY

  • Flexiv software package v4.1 (for Flexiv Enlight series only)

ADD

  • RobotActions struct to define robot actions data in joint and Cartesian space, with Robot::actions() to retrieve the current actions data per joint group
  • SyncMotionMode enum for synchronous motion control
  • Robot::Home() to move the robot to its home posture
  • Robot::SendCartesianMotionForceMultiWaypoint() and the NrtCartesianMultiWaypointCmd struct for multi-waypoint Cartesian motion-force control
  • Robot::digital_outputs() to read the current digital output ports
  • IKParams and IKResult structs and Model::SolveConstrainedIK() in model.hpp
  • ProductModel enum and kProductModelNames map in data.hpp
  • ALL and EXT_AXIS entries added to the JointGroup enum
  • RobotInfo::all_groups and RobotInfo::single_arm_groups maps
  • friction_comp_scale input parameter to RtJointTorqueCmd
  • utility::PrimitiveStateTrueForGroups() (with overload) and utility::IsSingleArmGroup()

CHANGE

  • Replaced Fast DDS and its related dependencies with Zenoh as the underlying communication middleware
  • Renamed Robot::Enable() to Robot::ServoOn() and OperationalStatus::NOT_ENABLED to NOT_SERVO_ON to be consistent with the UI
  • Changed enabling_button_pressed() to enabling_device_on() and updated Robot::estop_released() to cover all connected enabling/e-stop devices
  • Replaced RobotStates::tau_des with RobotActions::tau_d
  • Updated the Model, Tool, Safety, and Gripper interfaces to support multiple joint groups
  • Changed vectors in SafetyLimits to maps; changed Gripper::Init() input parameter from vector to scalar
  • Added joint group input restrictions/checks to joint-space control functions and other Robot functions
  • Replaced Robot::LockExternalAxes() and SyncWithPositioner() with new entries in PrimitiveArgs
  • Changed Robot::primitive_states() to return only the joint groups that currently have a running primitive
  • Removed the [groups] input parameter from Robot::Brake() (now applies to all groups)
  • Removed Robot::groups() (info migrated to RobotInfo)
  • RobotInfo updates: replaced model_name string with product_model enum; combined all DoF variants into a single DoF map; changed limits and nominal values to maps; removed has_FT_sensor
  • Changed the accepted serial number format passed to the Robot constructor; removed the network_interface_whitelist parameter from the Robot constructor
  • Removed Robot::RunAutoRecovery() — recovery is now only permitted during manual mode per new certification requirements
  • Removed the length limit from Robot::ExecutePrimitive() and SetGlobalVariables(), and the file-size limit in FileIO
  • Switched to nested namespace declarations; added inline to const maps
  • Updated C++ and Python examples and unit tests (including robot-construction tests); updated README, docs, and llms.txt

FIX

  • Fixed Windows support in install_zenoh.sh
  • Fixed a dangling reference in the examples
  • Fixed wait_primitive_transition() in AGENT_REFERENCE_primitives_only.py

pzhu-flexiv added 30 commits May 5, 2026 11:37
Comment thread .github/workflows/ci-cpp.yml Fixed
Comment thread .github/workflows/ci-python.yml Fixed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Release v2.1 update of Flexiv RDK that migrates the communication middleware from Fast DDS to Zenoh and expands multi–joint-group support across APIs, examples, docs, and CI.

Changes:

  • Replaces Fast DDS dependency install flow with Zenoh (new installer + CMake dependency updates).
  • Adds/updates API surface for multi-group operation (e.g., joint-group maps in RobotInfo, new RobotActions, constrained IK, gripper/tool per-group APIs) and updates C++/Python examples accordingly.
  • Refreshes CI to separate C++ and Python workflows, and updates tests/docs for new serial/model conventions and v2.1 versioning.

Reviewed changes

Copilot reviewed 76 out of 77 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
thirdparty/scripts/install_zenoh.sh Adds Zenoh (zenoh-c + zenoh-cpp) dependency install script, including Windows Rust toolchain handling.
thirdparty/scripts/install_foonathan_memory.sh Removes Fast DDS vendor dependency install script.
thirdparty/scripts/install_Fast-DDS.sh Removes Fast DDS install script.
thirdparty/scripts/install_Fast-CDR.sh Removes Fast CDR install script.
thirdparty/patches/fastdds_qnx802.patch Removes QNX patch previously needed for Fast DDS.
thirdparty/build_and_install_dependencies.sh Switches dependency build sequence to install Zenoh instead of Fast DDS stack.
test/test_timeliness_monitor.cpp Updates test to use RobotInfo::single_arm_groups and ServoOn().
test/test_robot_constructor.py Adds Python unit test covering offline robot construction/serial validation behavior.
test/test_robot_constructor.cpp Adds C++ unit test covering offline robot construction/serial validation behavior.
test/test_repeated_instantiation.cpp Updates example/test to ServoOn() and new serial format hint text.
test/test_loop_latency.cpp Updates example/test to ServoOn() and new serial format hint text.
test/test_endurance.cpp Updates endurance test for Home(), single-arm group constraints, and joint-group map usage.
test/test_dynamics_engine.cpp Updates dynamics test to use JointGroup::ALL, Home(), and per-group Tool APIs.
test/CMakeLists.txt Refactors test build (functional vs unit tests), adds GTest FetchContent, switches to C++20.
README.md Updates badges, notes formatting, Windows runtime guidance, serial examples, and minimum CMake version.
llms.txt Updates repository guidance for v2.1 API (groups from robot.info(), ServoOn(), wait helper pattern).
LICENSE Updates third-party license list to reflect Zenoh instead of Fast DDS dependencies.
lib/libflexiv_rdk.x86_64-linux-gnu.a.sha256 Updates expected hash for released static library artifact.
lib/libflexiv_rdk.arm64-darwin.a.sha256 Updates expected hash for released static library artifact.
lib/libflexiv_rdk.aarch64-linux-gnu.a.sha256 Updates expected hash for released static library artifact.
lib/flexiv_rdk.win_amd64.lib.sha256 Updates expected hash for released static library artifact.
include/flexiv/rdk/work_coord.hpp Switches to nested namespace declaration style.
include/flexiv/rdk/utility.hpp Adds primitive-state wait helpers and single-arm group helper; switches to nested namespace declarations.
include/flexiv/rdk/tool.hpp Updates Tool API to be joint-group aware (name/group, params/group, Switch(group, ...)).
include/flexiv/rdk/scheduler.hpp Switches to nested namespace declaration style.
include/flexiv/rdk/safety.hpp Migrates limits data to per-group maps and updates APIs to accept joint groups.
include/flexiv/rdk/model.hpp Adds constrained IK structs/API, updates Update() naming, group-aware configuration score.
include/flexiv/rdk/mode.hpp Makes mode-name map inline and updates doc references.
include/flexiv/rdk/maintenance.hpp Switches to nested namespace declaration style and updates docs for group parameter.
include/flexiv/rdk/gripper.hpp Makes gripper operations joint-group aware and returns per-group params/states.
include/flexiv/rdk/file_io.hpp Removes file-size limit mentions and switches to nested namespace declaration style.
include/flexiv/rdk/device.hpp Switches to nested namespace declaration style.
include/flexiv/rdk/data.hpp Adds ProductModel, RobotActions, SyncMotionMode, new JointGroup entries, and various data-structure updates.
example/intermediate7_robot_dynamics.cpp Updates dynamics example for Home(), JointGroup::ALL, and constrained IK API.
example/intermediate6_realtime_cartesian_motion_force_control.cpp Updates example for Home(), ServoOn(), and group restrictions + primitive-state helper.
example/intermediate5_realtime_cartesian_pure_motion_control.cpp Updates example for Home(), ServoOn(), group restrictions, and per-group nominal stiffness usage.
example/intermediate4_realtime_joint_floating.cpp Updates example for Home() and ServoOn().
example/intermediate3_realtime_joint_torque_control.cpp Updates example for Home() and ServoOn().
example/intermediate2_realtime_joint_impedance_control.cpp Updates example for Home(), ServoOn(), group restrictions, and per-group nominal stiffness usage.
example/intermediate1_realtime_joint_position_control.cpp Updates example for Home() and ServoOn().
example/CMakeLists.txt Enables CMP0167 policy workaround; switches examples to C++20; updates example list after removals.
example/basics9_logging_behavior.cpp Fixes example annotation name and updates serial hint.
example/basics8_global_variables.cpp Fixes example annotation name; updates to ServoOn().
example/basics7_update_robot_tool.cpp Fixes example annotation name; updates Tool APIs to be per-group and uses ServoOn().
example/basics7_auto_recovery.cpp Removes auto-recovery tutorial example per certification/feature removal.
example/basics6_gripper_control.cpp Updates gripper example to per-group APIs and separate device/tool names; uses ServoOn().
example/basics5_zero_force_torque_sensors.cpp Updates primitive execution to single-arm groups and uses primitive-state helper; uses ServoOn().
example/basics4_plan_execution.cpp Updates to ServoOn() and serial hint changes.
example/basics3_primitive_execution.cpp Updates to Home() convenience wrapper, single-arm groups, and primitive-state helper; uses ServoOn().
example/basics2_clear_fault.cpp Updates serial hint text.
example/basics1_display_robot_states.cpp Updates to list groups via robot.info(), prints actions() and digital outputs, uses ServoOn().
example_py/utility.py Adds primitive-state wait helper in Python and documents module usage pattern.
example_py/intermediate5_robot_dynamics.py Updates for Home(), JointGroup.ALL, and constrained IK API.
example_py/intermediate4_non_realtime_cartesian_motion_force_control.py Uses Home(), ServoOn(), single_arm_groups, and Python primitive-state helper.
example_py/intermediate3_non_realtime_cartesian_pure_motion_control.py Uses Home(), ServoOn(), single_arm_groups, and Python primitive-state helper.
example_py/intermediate2_non_realtime_joint_impedance_control.py Uses Home(), ServoOn(), group restrictions, and per-group nominal stiffness usage.
example_py/intermediate1_non_realtime_joint_position_control.py Uses Home() and ServoOn().
example_py/basics8_global_variables.py Fixes docstring filename and updates to ServoOn().
example_py/basics7_update_robot_tool.py Fixes docstring filename; updates Tool APIs to per-group and uses ServoOn().
example_py/basics7_auto_recovery.py Removes auto-recovery tutorial example per certification/feature removal.
example_py/basics6_gripper_control.py Updates gripper example to per-group APIs and separate device/tool names; uses ServoOn().
example_py/basics5_zero_force_torque_sensors.py Updates primitive execution to single-arm groups and uses Python primitive-state helper; uses ServoOn().
example_py/basics4_plan_execution.py Updates to ServoOn() and serial hint changes.
example_py/basics3_primitive_execution.py Uses Home() convenience wrapper, single-arm groups, improved primitive-state printing, and helper; uses ServoOn().
example_py/basics2_clear_fault.py Updates serial hint text.
example_py/basics1_display_robot_states.py Updates to list groups via robot.info(), prints actions() and digital outputs, uses ServoOn().
example_py/AGENT_REFERENCE_primitives_only.py Updates agent reference to v2.1 group APIs, Home(), ServoOn(), and Python helper for transitions.
doc/Doxyfile.in Bumps documentation version to 2.1.
CMakeLists.txt Bumps project version to 2.1, swaps Fast DDS deps for Zenoh deps, enforces C++20, adds CMP0167 policy handling.
cmake/flexiv_rdk-config.cmake.in Updates exported dependency list to Zenoh instead of Fast DDS.
.gitignore Adds .venv ignore entry.
.github/workflows/shared_python_steps/action.yml Adds shared composite action for Python checks (byte-compile + unit test).
.github/workflows/shared_cpp_steps/action.yml Renames and extends shared C++ steps to run unit tests via ctest.
.github/workflows/cmake.yml Removes monolithic CMake CI workflow in favor of split workflows.
.github/workflows/ci-python.yml Adds dedicated Python CI workflow using shared steps across OS/Python matrix.
.github/workflows/ci-cpp.yml Adds dedicated C++ CI workflow using shared steps across OS matrix.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread include/flexiv/rdk/utility.hpp
Comment thread include/flexiv/rdk/utility.hpp
Comment thread example_py/utility.py
Comment thread test/CMakeLists.txt
Comment thread .github/workflows/ci-cpp.yml Fixed
Comment thread .github/workflows/ci-python.yml Fixed
Comment thread example/intermediate1_realtime_joint_position_control.cpp
Comment thread example/intermediate1_realtime_joint_position_control.cpp Outdated
@pzhu-flexiv
pzhu-flexiv merged commit bfab04f into main Jun 27, 2026
22 checks passed
@pzhu-flexiv
pzhu-flexiv deleted the release/v2.1 branch June 27, 2026 18:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request release New version release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEATURE] Add Digital Output (DO) State Query API for Improved Observability

4 participants