Source code for pyniryo2.niryo_robot

# - Imports
from __future__ import print_function

# Python libraries
import time

# Communication imports
from .arm.arm import Arm
from .conveyor.conveyor import Conveyor
from .io.io import IO
from .pick_place.pick_place import PickPlace
from .saved_poses.saved_poses import SavedPoses
from .tool.tool import Tool
from .trajectories.trajectories import Trajectories
from .vision.vision import Vision
from .led_ring.led_ring import LedRing
from .sound.sound import Sound
from .frames.frames import Frames
from .niryo_ros import NiryoRos


[docs]class NiryoRobot(object): def __init__(self, ip_address="127.0.0.1", port=9090): """ Connect your robot to your computer: :: robot_simulation = NiryoRobot("127.0.0.1") # Simulation robot_hotpot = NiryoRobot("10.10.10.10") # Hotspot robot_ethernet = NiryoRobot("169.254.200.201") # Ethernet :param ip_address: robot ROS ip :type ip_address: str :param port: robot ROS port :type port: int """ self.__host = ip_address self.__port = port self.__client = NiryoRos(ip_address, port) self.__vision = None self.__pick_place = None self.__trajectories = None self.__tool = None self.__sound = None self.__saved_poses = None self.__io = None self.__conveyor = None self.__arm = None self.__led_ring = None self.__frames = None self.__arm = Arm(self.__client) self.__conveyor = Conveyor(self.__client) self.__io = IO(self.__client) self.__saved_poses = SavedPoses(self.__client) self.__sound = Sound(self.__client) self.__tool = Tool(self.__client) self.__trajectories = Trajectories(self.__client) self.__frames = Frames(self.__client) self.__pick_place = PickPlace(self.__client, self.__arm, self.__tool, self.__trajectories) self.__vision = Vision(self.__client, self.__arm, self.__tool) self.__led_ring = LedRing(self.__client) def __del__(self): del self.__vision del self.__pick_place del self.__trajectories del self.__tool del self.__sound del self.__saved_poses del self.__io del self.__conveyor del self.__arm del self.__frames self.end() def __str__(self): return "Niryo Robot" def __repr__(self): return self.__str__() @property def client(self): """ Get the Niryo Ros client :return: NiryoRos client :rtype: NiryoRos """ return self.__client
[docs] def end(self): """ Disconnect from your robot and ROS: :: # Start robot = NiryoRobot("10.10.10.10") # End robot.end() :rtype: None """ if self.__client is not None and self.__client.is_connected: self.__client.close()
[docs] @staticmethod def wait(duration): """ Wait for a certain time :param duration: duration in seconds :type duration: float :rtype: None """ time.sleep(duration)
@property def arm(self): """ Access to the Arm API Example: :: robot = NiryoRobot(<robot_ip_address>) robot.arm.calibrate_auto() robot.arm.move_joints([0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) :rtype: Arm """ return self.__arm @property def conveyor(self): """ Access to the Conveyor API Example: :: robot = NiryoRobot(<robot_ip_address>) conveyor_id = robot.conveyor.set_conveyor() robot.conveyor.run_conveyor(conveyor_id) :rtype: Conveyor """ return self.__conveyor @property def io(self): """ Access to the I/Os API Example: :: robot = NiryoRobot(<robot_ip_address>) robot.io.set_pin_mode(PinID.GPIO_1A, PinMode.INPUT) robot.io.digital_write(PinID.GPIO_1A, PinState.HIGH) :rtype: IO """ return self.__io @property def pick_place(self): """ Access to the PickPlace API Example: :: robot = NiryoRobot(<robot_ip_address>) robot.pick_place.pick_from_pose([0.2, 0.0, 0.1, 0.0, 1.57, 0.0]) robot.pick_place.place_from_pose([0.0, 0.2, 0.1, 0.0, 1.57, 0.0]) :rtype: PickPlace """ return self.__pick_place @property def saved_poses(self): """ Access to the SavedPoses API Example: :: robot = NiryoRobot(<robot_ip_address>) pose_name_list = robot.saved_poses.get_saved_pose_list() robot.saved_poses.get_pose_saved(pose_name_list[0]) :rtype: SavedPoses """ return self.__saved_poses @property def sound(self): """ Access to the Sound API Example: :: robot = NiryoRobot(<robot_ip_address>) sound.play_sound_user("test_sound.wav") sound_name = sound.get_sounds()[0] sound_duration = sound.play(sound_name) :rtype: Sound """ return self.__sound @property def tool(self): """ Access to the Tool API Example: :: robot = NiryoRobot(<robot_ip_address>) robot.tool.update_tool() robot.tool.grasp_with_tool() robot.tool.release_with_tool() :rtype: Tool """ return self.__tool @property def trajectories(self): """ Access to the Trajectories API Example: :: robot = NiryoRobot(<robot_ip_address>) trajectories = robot.trajectories.get_saved_trajectory_list() if len(trajectories) > 0: robot.trajectories.execute_trajectory_saved(trajectories[0]) :rtype: Trajectories """ return self.__trajectories @property def vision(self): """ Access to the Vision API Example: :: robot = NiryoRobot(<robot_ip_address>) robot.vision.vision_pick("workspace_1", 0.0, ObjectShape.ANY, ObjectColor.ANY) robot.vision.detect_object("workspace_1", ObjectShape.ANY, ObjectColor.ANY) :rtype: Vision """ return self.__vision @property def led_ring(self): """ Access to the Led Ring API Example: :: robot = NiryoRobot(<robot_ip_address>) niryo_robot.led_ring.led_ring_flash([20,255,78], iterations = 10, wait = True, frequency = 8) niryo_robot.led_ring.led_ring_turn_off() :rtype: LedRing """ return self.__led_ring @property def frames(self): """ Access to the frame API Example: :: robot = NiryoRobot(<robot_ip_address>) :rtype: Frames """ return self.__frames