Edit Content

Improvements

  • Improve /niryo_robot/conveyor/feedback reactivity when a conveyor is added or removed
  • Added convenience function NiryoRosWrapper.init_with_node which init a ros node and returns a NiryoRosWrapper instance
  • Deprecate NiryoRosWrapper.move_relative
  • Added a param normalize=True to NiryoRosWrapper.msg_from_pose
  • Add security checks to NiryoRosWrapper.unset_conveyor and NiryoRosWrapper.control_conveyor
  • NiryoRosWrapper.get_conveyors_feedback now returns a list of dict instead of a list of ConveyorFeedback messages
  • Added the following functions to the TCP server:
    • GET_POSE_V2
    •  FORWARD_KINEMATICS_V2
    • INVERSE_KINEMATICS_V2
    • GET_TCP
    • GET_CONVEYORS_FEEDBACK
  • Revert –robot_type arg deletion but set it deprecated to avoid breaking changes

Bug Fixes

  • Fixed wrong camera and gripper transforms in Ned3pro and Ned2’s URDF for simulation
  • Fixed a bug which prevented the jog feature to work
  • Use lazy loading from database when getting the joints home position settings to prevent a bug where the robot was unable to access the database at boot time
  • Ned3pro digital inputs are now not inverted
  • Fixed the jog features
  • Fixed NiryoRosWrapper.__get_obj_from_args which didn’t work with JointsPosition
  • Fixed NiryoRosWrapper.forward_kinematics which returned v2 metadata despite being a v1 pose
  • Fixed NiryoRosWrapper.inverse_kinematics which returned was converting poses to v2 before doing the inverse kinematics
  • Fixed a bug in Pose which was allocating the same instance of PoseMetadata when using the constructor’s default metadata value
  • Fixed a bug where memory was allocated and not freed each time the program player’s node tried to connect to an inexistant device
  • Fixed a bug in Tool ROS wrapper which was not using the correct service type when calling tool reboot service
  • Use correct message type for ros subscriber in arm_state
  • WifiClient.get_configured_networks now parse correctly SSIDs with characters different than `[0-9a-zA-Z- ]`
  • Missing type for environment default insertion in base.py
  • Fixed a bug which caused to set the default ethernet mode to DHCP instead of AUTO if not in DB
  • WifiClient can handle SSIDs with any unicode characters
Edit Content

Features

  • Implemented NED3 hardware changes into the niryo_robot_rpi package
  • Added support for NED3 calibration
  • Added support for the conveyor with NED3 stepper motor
  • Added support for vacuum pump v2
  • Added velocity and acceleration profiles for vacuum pump v2
  • Updated the robot’s URDF to follow the Denavit-Hartenberg convention
  • Introduced new Pose and JointsPosition classes
  • The /niryo_robot_arm_commander/robot_action action server now handles both old and new TCP versions using the tcp_version field in ArmMoveCommand.msg
  • Updated niryo_robot_poses_handlers grip files to align with the new TCP orientation
  • Added pose_version and tcp_version to NiryoPose.msg
  • New generic classes designed to represent data:
    • JointsPosition
    • JointsPositionMetadata
    • Pose
    • PoseMetadata
  • New functions in niryo_robot_poses_handlers/transform_functions: convert_legacy_rpy_to_dh_convention() and convert_dh_convention_to_legacy_rpy()
  • Added new functions to ros_wrapper.NiryoRosWrapper that can take either Pose or JointsPosition objects:
    • move, replacing move_joints, move_pose, and move_linear_pose
    • jog_shift, replacing jog_joints_shift and jog_pose_shift
    • pick, replacing pick_from_pose
    • place, replacing place_from_pose
    • execute_trajectory, replacing execute_trajectory_from_poses and execute_trajectory_from_poses_and_joints
    • compute_trajectory, replacing compute_trajectory_from_poses and compute_trajectory_from_poses_and_joints
  • New TCP server commands: GET_COLLISION_DETECTED, CLEAR_COLLISION_DETECTED, HANDSHAKE, MOVE, JOG, PICK, PLACE, EXECUTE_TRAJECTORY
  • Updated tool translation transforms to match the new TCP orientation
  • Added hardware ID to the conveyors (v2 and v3)
  • The new robot pose is now published on /niryo_robot/robot_state_v2 for compatibility with older NiryoStudio versions
  • The new relative robot pose is published on /niryo_robot_poses_handlers/relative_pose_v2 for compatibility with older NiryoStudios
  • Added a service to retrieve the conveyor hardware ID to differentiate between v2 and v3 models, service name: /niryo_robot/conveyor/get_hardware_id
  • Added services for forward and inverse kinematics using the new TCP convention (Z-axis pointing forward)
  • Added a ROS wrapper function to get forward kinematics using the new TCP convention (Z-axis pointing forward)
  • Introduced a new ROS topic /niryo_robot_tools_commander/tcp_v2, which publishes the transform from hand_link to the TCP following the new TCP convention
  • Adjusted robot’s pose limits for NED3 to match its reachability
  • New ethernet mode: auto
    • Automatically detects if the robot is connected to a DHCP network; switches to DHCP mode if detected, otherwise defaults to IPV4LL mode

Improvements

  • Used the I/O panel version instead of the robot hardware version to differentiate implementations
  • Created a set of gpio_expander_adapters classes to handle GPIOs similarly to how MCP IOs are handled
  • Updated the DACx0501 driver
  • NiryoRosWrapper.vision_pick now accepts an optional observation pose (obs_pose)
  • Added speed limit percentage for the conveyor
  • When a tool stops moving, a position-holding command is sent instead of resending the max position command, significantly reducing temperature rise
  • Updated Dynamixel PID for axes 4 to 6

Bug Fixes

  • Stopping a program now sends SIGTERM, followed by SIGKILL after 3 seconds if the program doesn’t exit gracefully
  • Grasp and release actions now use feedback to determine completion rather than stopping after a fixed time
  • Debounced emergency stop resume to avoid resuming on small 12v spikes
  • Renaming a dynamic frame now also updates its name in the transform
  • Fixed NiryoRosWrapper.get_workspace_list to no longer return an error
  • The TCP server’s __send_answer_with_payload now encodes the payload only if it’s not already encoded
  • Fixed intermittent delay in the control loop caused by a ROS spinOnce call
  • Fixed a bug causing the FirmwareUpdater to crash when the end effector version was not set
Edit Content

Features

  • Implemented NED3 hardware changes into the niryo_robot_rpi package
  • Added support for NED3 calibration
  • Added support for the conveyor with NED3 stepper motor
  • Added support for vacuum pump v2
  • Added velocity and acceleration profiles for vacuum pump v2
  • Updated the robot’s URDF to follow the Denavit-Hartenberg convention
  • Introduced new Pose and JointsPosition classes
  • The /niryo_robot_arm_commander/robot_action action server now handles both old and new TCP versions using the tcp_version field in ArmMoveCommand.msg
  • Updated niryo_robot_poses_handlers grip files to align with the new TCP orientation
  • Added pose_version and tcp_version to NiryoPose.msg
  • New generic classes designed to represent data:
    • JointsPosition
    • JointsPositionMetadata
    • Pose
    • PoseMetadata
  • New functions in niryo_robot_poses_handlers/transform_functions: convert_legacy_rpy_to_dh_convention() and convert_dh_convention_to_legacy_rpy()
  • Added new functions to ros_wrapper.NiryoRosWrapper that can take either Pose or JointsPosition objects:
    • move, replacing move_joints, move_pose, and move_linear_pose
    • jog_shift, replacing jog_joints_shift and jog_pose_shift
    • pick, replacing pick_from_pose
    • place, replacing place_from_pose
    • execute_trajectory, replacing execute_trajectory_from_poses and execute_trajectory_from_poses_and_joints
    • compute_trajectory, replacing compute_trajectory_from_poses and compute_trajectory_from_poses_and_joints
  • New TCP server commands: GET_COLLISION_DETECTED, CLEAR_COLLISION_DETECTED, HANDSHAKE, MOVE, JOG, PICK, PLACE, EXECUTE_TRAJECTORY
  • Updated tool translation transforms to match the new TCP orientation
  • Added hardware ID to the conveyors (v2 and v3)
  • The new robot pose is now published on /niryo_robot/robot_state_v2 for compatibility with older NiryoStudio versions
  • The new relative robot pose is published on /niryo_robot_poses_handlers/relative_pose_v2 for compatibility with older NiryoStudios
  • Added a service to retrieve the conveyor hardware ID to differentiate between v2 and v3 models, service name: /niryo_robot/conveyor/get_hardware_id
  • Added services for forward and inverse kinematics using the new TCP convention (Z-axis pointing forward)
  • Added a ROS wrapper function to get forward kinematics using the new TCP convention (Z-axis pointing forward)
  • Introduced a new ROS topic /niryo_robot_tools_commander/tcp_v2, which publishes the transform from hand_link to the TCP following the new TCP convention
  • Adjusted robot’s pose limits for NED3 to match its reachability
  • New ethernet mode: auto
    • Automatically detects if the robot is connected to a DHCP network; switches to DHCP mode if detected, otherwise defaults to IPV4LL mode

Improvements

  • Used the I/O panel version instead of the robot hardware version to differentiate implementations
  • Created a set of gpio_expander_adapters classes to handle GPIOs similarly to how MCP IOs are handled
  • Updated the DACx0501 driver
  • NiryoRosWrapper.vision_pick now accepts an optional observation pose (obs_pose)
  • Added speed limit percentage for the conveyor
  • When a tool stops moving, a position-holding command is sent instead of resending the max position command, significantly reducing temperature rise
  • Updated Dynamixel PID for axes 4 to 6

Bug Fixes

  • Stopping a program now sends SIGTERM, followed by SIGKILL after 3 seconds if the program doesn’t exit gracefully
  • Grasp and release actions now use feedback to determine completion rather than stopping after a fixed time
  • Debounced emergency stop resume to avoid resuming on small 12v spikes
  • Renaming a dynamic frame now also updates its name in the transform
  • Fixed NiryoRosWrapper.get_workspace_list to no longer return an error
  • The TCP server’s __send_answer_with_payload now encodes the payload only if it’s not already encoded
  • Fixed intermittent delay in the control loop caused by a ROS spinOnce call
  • Fixed a bug causing the FirmwareUpdater to crash when the end effector version was not set
Edit Content

Improvements

  • The service /niryo_robot/kinematics/forward now includes status and message in its response.
  • The service /niryo_robot/kinematics/inverse now includes status and message in its response.
  • Introduction of a new Modbus server.
  • Enhanced functionalities in ros_wrapper: get_current_tool_state, get_tcp, get_digital_io_mode, get_available_disk_size, get_ros_logs_size, control_video_stream.
  • Addition of new endpoint in system_api_client: get_system_version_current.
  • Increased threshold for end effector collision detection.

Bug Fixes

  • The set_program_autorun service did not consider the mode when transitioning to “DISABLE”.
  • Correction made to the /niryo_robot/kinematics/forward service, which occasionally crashed due to transformation extrapolation.
    In ros_wrapper, __conveyor_id_to_conveyor_number no longer depends on currently attached conveyors.
  • Fixed incorrect docstrings in ros_wrapper.
  • Fixed a bug preventing vision captures with enabled TCP transformation.
  • Fixed a bug that prevented a running program process from stopping completely.
  • Fixed a bug in NiryoActionClient that did not handle response timeouts.
  • Fixed a bug that could cause the tool commander action server to remain permanently blocked in active mode.
  • Fixed a bug preventing the tool commander action server from accepting new goals once a goal with a future date was published.