niryo_robot_rpi packagePose and JointsPosition classes/niryo_robot_arm_commander/robot_action action server now handles both old and new TCP versions using the tcp_version field in ArmMoveCommand.msgniryo_robot_poses_handlers grip files to align with the new TCP orientationpose_version and tcp_version to NiryoPose.msgJointsPositionJointsPositionMetadataPosePoseMetadataniryo_robot_poses_handlers/transform_functions: convert_legacy_rpy_to_dh_convention() and convert_dh_convention_to_legacy_rpy()ros_wrapper.NiryoRosWrapper that can take either Pose or JointsPosition objects:move, replacing move_joints, move_pose, and move_linear_posejog_shift, replacing jog_joints_shift and jog_pose_shiftpick, replacing pick_from_poseplace, replacing place_from_poseexecute_trajectory, replacing execute_trajectory_from_poses and execute_trajectory_from_poses_and_jointscompute_trajectory, replacing compute_trajectory_from_poses and compute_trajectory_from_poses_and_jointsGET_COLLISION_DETECTED, CLEAR_COLLISION_DETECTED, HANDSHAKE, MOVE, JOG, PICK, PLACE, EXECUTE_TRAJECTORY/niryo_robot/robot_state_v2 for compatibility with older NiryoStudio versions/niryo_robot_poses_handlers/relative_pose_v2 for compatibility with older NiryoStudios/niryo_robot/conveyor/get_hardware_id/niryo_robot_tools_commander/tcp_v2, which publishes the transform from hand_link to the TCP following the new TCP conventionautogpio_expander_adapters classes to handle GPIOs similarly to how MCP IOs are handledNiryoRosWrapper.vision_pick now accepts an optional observation pose (obs_pose)SIGTERM, followed by SIGKILL after 3 seconds if the program doesn’t exit gracefullyNiryoRosWrapper.get_workspace_list to no longer return an error__send_answer_with_payload now encodes the payload only if it’s not already encodedROS spinOnce call