/ Release notes
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
andJointsPosition
classes - The
/niryo_robot_arm_commander/robot_action
action server now handles both old and new TCP versions using thetcp_version
field inArmMoveCommand.msg
- Updated
niryo_robot_poses_handlers
grip files to align with the new TCP orientation - Added
pose_version
andtcp_version
toNiryoPose.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()
andconvert_dh_convention_to_legacy_rpy()
- Added new functions to
ros_wrapper.NiryoRosWrapper
that can take eitherPose
orJointsPosition
objects:move
, replacingmove_joints
,move_pose
, andmove_linear_pose
jog_shift
, replacingjog_joints_shift
andjog_pose_shift
pick
, replacingpick_from_pose
place
, replacingplace_from_pose
execute_trajectory
, replacingexecute_trajectory_from_poses
andexecute_trajectory_from_poses_and_joints
compute_trajectory
, replacingcompute_trajectory_from_poses
andcompute_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 fromhand_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 bySIGKILL
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
andJointsPosition
classes - The
/niryo_robot_arm_commander/robot_action
action server now handles both old and new TCP versions using thetcp_version
field inArmMoveCommand.msg
- Updated
niryo_robot_poses_handlers
grip files to align with the new TCP orientation - Added
pose_version
andtcp_version
toNiryoPose.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()
andconvert_dh_convention_to_legacy_rpy()
- Added new functions to
ros_wrapper.NiryoRosWrapper
that can take eitherPose
orJointsPosition
objects:move
, replacingmove_joints
,move_pose
, andmove_linear_pose
jog_shift
, replacingjog_joints_shift
andjog_pose_shift
pick
, replacingpick_from_pose
place
, replacingplace_from_pose
execute_trajectory
, replacingexecute_trajectory_from_poses
andexecute_trajectory_from_poses_and_joints
compute_trajectory
, replacingcompute_trajectory_from_poses
andcompute_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 fromhand_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 bySIGKILL
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.