Example #1
0
    def work(self, input_items, output_items):
        out = output_items[0]

        # Get single IP packet from TUN Device
        buf = self.tun_handler.read()
        if self.use_ot_packets:
            # Create smaller OT packet from IP packet
            #packet = PacketHandler.to_ot(buf[4:])
            packet = PacketHandler.to_ot(buf)
        else:
            #packet = dpkt.ip.IP(buf[4:])
            packet = dpkt.ip.IP(buf)

        # TODO: DEBUG message, remove in production
        print "TUN Source: ", PacketHandler.show(packet)

        # Write packet to output buffer
        result = np.fromstring(str(packet), dtype=np.uint8)
        print "Packetlänge source "+ str(len(result))
        out[:len(result)] = result

        # Write length tag to output buffer
        self.add_item_tag(0, self.nitems_written(0),
                          pmt.string_to_symbol(self.len_tag_key),
                          pmt.from_long(len(result)),
                          pmt.PMT_NIL)

        return len(result)
Example #2
0
 def __init__(self, device_path=None, baud_rate=57600):
     self.device_path = device_path
     self.baud_rate = baud_rate
     self.portHandler = PortHandler(self.device_path,
                                    baudrate=self.baud_rate)
     self.portHandler.openPort()
     self.packetHandler = PacketHandler(XM430W350.PROTOCOL_VERSION)
Example #3
0
 def __init__(self, pkt, in_port, data, datapath, controller, federazione,
              public_to_private_a, public_to_private_b):
     PacketHandler.__init__(self, pkt)
     self._pkt = pkt
     self._datapath = datapath
     self._in_port = in_port
     self._data = data
     self._controller = controller
     self._federation = federazione
     self._public_to_private_a = public_to_private_a
     self._public_to_private_b = public_to_private_b
Example #4
0
 def __init__(self, pkt, in_port, data, datapath, controller, federazione,
              public_to_private_a, public_to_private_b, pkt_dns):
     PacketHandler.__init__(self, pkt)
     self._pkt = pkt
     self._pkt_dns = pkt_dns
     self._datapath = datapath
     self._in_port = in_port
     self._data = data
     self._controller = controller
     self._federation = federazione
     self._public_to_private_a = public_to_private_a
     self._public_to_private_b = public_to_private_b
     print '--------DNSResponseHandler-Alg1-----'
Example #5
0
 def __init__(self, pkt, dp_to_customer, in_port, data, datapath,
              controller, federazione, public_to_private_a,
              public_to_private_b):
     PacketHandler.__init__(self, pkt)
     self._pkt = pkt
     self._dp_to_customer = dp_to_customer
     self._federazione = federazione
     self._controller = controller
     self._in_port = in_port
     self._datapath = datapath
     self._data = data
     self._public_to_private_a = public_to_private_a
     self._public_to_private_b = public_to_private_b
     self._public_address_src = None
     self._public_address_dst = None
Example #6
0
    def handle_msg(self, msg):
        buf = pmt.to_python(msg)[1]
        # Cast numpy buf to string to prevent doomsday
        buf = ''.join(map(chr, buf))
        if self.use_ot_packets:
            addr = self.tun_handler.tun.addr
            dstaddr = self.tun_handler.tun.dstaddr

            packet = PacketHandler.to_ip(buf, dstaddr, addr)
        else:
            packet = dpkt.ip.IP(buf)

        # TODO: DEBUG message, remove in production
        print "TUN Sink: ", PacketHandler.show(packet)

        # Write packet to TUN Device
        #print len(str(packet))
        # TODO:  IFF_NO_PI (remove 4 byte)
        #self.tun_handler.write(' ' * 4 + str(packet))
        self.tun_handler.write(str(packet))
Example #7
0
 def __init__(self, pkt, datapath, in_port, controller):
     PacketHandler.__init__(self, pkt)
     self._pkt = pkt
     self._datapath = datapath
     self._in_port = in_port
     self._controller = controller
Example #8
0
from properties import properties
print(properties)

#Command line arguments
timestamp = False
verbose = False
for argument in sys.argv:
    if argument == '-v':
        verbose = True
    elif argument == '-t':
        timestamp = True

#Remember: launch pigpio daemon (sudo pigpiod)

#declare packetHandler
packetHandler = PacketHandler(verbose)

#declare pigpio
pi = pigpio.pi()

#create servos
pan = Servo(pi, properties['pan_pin'], properties['starting_position'],
            properties['min_position'], properties['max_position'],
            properties['invert_x'])

#allow servos a second to connect
sleep(1)


def moveServos(values):
    pan.moveTo(pi, values[0])
Example #9
0
class XM430W350:
    '''
    XM430-W350 reference - http://emanual.robotis.com/docs/kr/dxl/x/xm430-w350/
    '''

    # define motor control address
    ADDR_PRO_TORQUE_ENABLE = 64
    ADDR_PROFILE_ACCELERATION = 108
    ADDR_PROFILE_VELOCITY = 112
    ADDR_PRO_GOAL_POSITION = 116
    ADDR_PRO_PRESENT_POSITION = 132

    # Protocol version
    PROTOCOL_VERSION = 2.0  # See which protocol version is used in the Dynamixel

    # const setting value
    TORQUE_ENABLE = 1  # Value for enabling the torque
    TORQUE_DISABLE = 0  # Value for disabling the torque

    DXL_MOVING_STATUS_THRESHOLD = 20

    MINMUM_MOTOR_POSITION = 0
    MAX_MOTOR_POSITION = 4095

    MIN_ANGLE = 0
    MAX_ANGLE = 359

    def __init__(self, device_path=None, baud_rate=57600):
        self.device_path = device_path
        self.baud_rate = baud_rate
        self.portHandler = PortHandler(self.device_path,
                                       baudrate=self.baud_rate)
        self.portHandler.openPort()
        self.packetHandler = PacketHandler(XM430W350.PROTOCOL_VERSION)

    def connectionTest(self, motor_id=1):
        '''
        @deprecated:
        to check motor device path is valid and motor connection is vaild
        '''
        dxl_comm_result, dxl_error = self.packetHandler.write1ByteTxRx(
            self.portHandler, motor_id, XM430W350.ADDR_PRO_TORQUE_ENABLE,
            XM430W350.TORQUE_ENABLE)
        if dxl_comm_result != COMM_SUCCESS:
            error_msg = "connectionTest Error - {0}, device_path : {1}, and motor id : {2}".format(
                self.packetHandler.getTxRxResult(dxl_comm_result),
                self.device_path, motor_id)
            raise Exception(error_msg)
        elif dxl_error != 0:
            error_msg = "connectionTest Error - {0}, device_path : {1}, and motor id : {2}".format(
                self.packetHandler.getRxPacketError(dxl_error),
                self.device_path, motor_id)
            raise Exception(error_msg)

    def connection_test(self, motor_id=1):
        '''
        to check motor device path is valid and motor connection is vaild
        '''
        self.connectionTest(motor_id)

    def setToqueEnable(self, motor_id=1, torqueEnable=True):
        '''
        @deprecated:
        motor의 토크를 활성화 한다
        '''
        torqueState = int(torqueEnable)
        dxl_comm_result, dxl_error = self.packetHandler.write1ByteTxRx(
            self.portHandler, motor_id, XM430W350.ADDR_PRO_TORQUE_ENABLE,
            torqueState)
        error_msg = None
        if dxl_comm_result != COMM_SUCCESS:
            error_msg = "setToqueEnable Error - {0}, device_path : {1}, and motor id : {2}".format(
                self.packetHandler.getTxRxResult(dxl_comm_result),
                self.device_path, motor_id)
            raise Exception(error_msg)
        elif dxl_error != 0:
            error_msg = "setToqueEnable Error - {0}, device_path : {1}, and motor id : {2}".format(
                self.packetHandler.getRxPacketError(dxl_error),
                self.device_path, motor_id)
            raise Exception(error_msg)

    def set_toque_enable(self, motor_id=1, torqueEnable=True):
        '''
        motor의 토크를 활성화 한다
        '''
        self.setToqueEnable(motor_id, torqueEnable)

    def setProfileVelocity(self, motor_id=1, profileVelocity=50):
        '''
        @deprecated:
        0 is unlimited
        value range 0 ~ 32767
        max value 32767
        '''
        if profileVelocity < 0:
            profileVelocity = 0

        if profileVelocity > 32767:
            profileVelocity = 32767

        dxl_comm_result, dxl_error = self.packetHandler.write4ByteTxRx(
            self.portHandler, motor_id, XM430W350.ADDR_PROFILE_VELOCITY,
            profileVelocity)
        if dxl_comm_result != COMM_SUCCESS:
            error_msg = "setProfileVelocity Error - {0}, device_path : {1}, and motor id : {2}".format(
                self.packetHandler.getTxRxResult(dxl_comm_result),
                self.device_path, motor_id)
            raise Exception(error_msg)
        elif dxl_error != 0:
            error_msg = "setProfileVelocity Error - {0}, device_path : {1}, and motor id : {2}".format(
                self.packetHandler.getRxPacketError(dxl_error),
                self.device_path, motor_id)
            raise Exception(error_msg)

    def set_profile_velocity(self, motor_id=1, profile_velocity=50):
        '''
        0 is unlimited
        value range 0 ~ 32767
        max value 32767
        '''
        self.setProfileVelocity(motor_id, profile_velocity)

    def setProfileAcceleration(self, motor_id=1, profileAcceleration=50):
        '''
        @deprecated:
        0 is unlimited
        value range 0 ~ 32767
        max value 32767
        '''
        if profileAcceleration < -1:
            profileAcceleration = 0

        if profileAcceleration > 32767:
            profileAcceleration = 32767

        dxl_comm_result, dxl_error = self.packetHandler.write4ByteTxRx(
            self.portHandler, motor_id, XM430W350.ADDR_PROFILE_ACCELERATION,
            profileAcceleration)
        if dxl_comm_result != COMM_SUCCESS:
            error_msg = "setProfileVelocity Error - {0}, device_path : {1}, and motor id : {2}".format(
                self.packetHandler.getTxRxResult(dxl_comm_result),
                self.device_path, motor_id)
            raise Exception(error_msg)
        elif dxl_error != 0:
            error_msg = "setProfileVelocity Error - {0}, device_path : {1}, and motor id : {2}".format(
                self.packetHandler.getRxPacketError(dxl_error),
                self.device_path, motor_id)
            raise Exception(error_msg)

    def set_profile_acceleration(self, motor_id=1, profile_acceleration=50):
        '''
        0 is unlimited
        value range 0 ~ 32767
        max value 32767
        '''
        self.setProfileAcceleration(motor_id, profile_acceleration)

    def setMotorAngle(self, motor_id=1, angle=0, angleReverse=False):
        '''
        @deprecated:
        set motor angle range -180 ~ 179
        angleReverse is rotate direction
        '''
        if angleReverse:
            angle = angle * -1

        if angle < -180:
            angle = -180
        if angle > 179:
            angle = 179

        transformAngle = angle + 180
        robotisAngle = int(
            interp(transformAngle, [
                XM430W350.MIN_ANGLE, XM430W350.MAX_ANGLE
            ], [XM430W350.MINMUM_MOTOR_POSITION, XM430W350.MAX_MOTOR_POSITION
                ]))
        dxl_comm_result, dxl_error = self.packetHandler.write4ByteTxRx(
            self.portHandler, motor_id, XM430W350.ADDR_PRO_GOAL_POSITION,
            robotisAngle)
        if dxl_comm_result != COMM_SUCCESS:
            error_msg = "setMotorAngle Error - {0}, device_path : {1}, and motor id : {2}".format(
                self.packetHandler.getTxRxResult(dxl_comm_result),
                self.device_path, motor_id)
            raise Exception(error_msg)
        elif dxl_error != 0:
            error_msg = "setMotorAngle Error - {0}, device_path : {1}, and motor id : {2}".format(
                self.packetHandler.getRxPacketError(dxl_error),
                self.device_path, motor_id)
            raise Exception(error_msg)

        while True:
            # Read present position
            dxl_present_position, dxl_comm_result, dxl_error = self.packetHandler.read4ByteTxRx(
                self.portHandler, motor_id,
                XM430W350.ADDR_PRO_PRESENT_POSITION)
            if dxl_comm_result != COMM_SUCCESS:
                error_msg = "while moving motor, error occured - {0}, device_path : {1}, and motor id : {2}, input angle : {3}, robotis angle : {4}".format(
                    self.packetHandler.getTxRxResult(dxl_comm_result),
                    self.device_path, motor_id, angle, robotisAngle)
                raise Exception(error_msg)
            elif dxl_error != 0:
                error_msg = "while moving motor, error occured - {0}, device_path : {1}, and motor id : {2}, input angle : {3}, robotis angle : {4}".format(
                    self.packetHandler.getRxPacketError(dxl_error),
                    self.device_path, motor_id, angle, robotisAngle)
                raise Exception(error_msg)
            # waiting for reach robotisAngle
            if not abs(robotisAngle - dxl_present_position
                       ) > XM430W350.DXL_MOVING_STATUS_THRESHOLD:
                break

    def set_motor_angle(self, motor_id=1, angle=0, angle_reverse=False):
        '''
        set motor angle range -180 ~ 179
        angle_reverse is rotate direction
        '''
        self.setMotorAngle(motor_id, angle, angle_reverse)

    def getPresentMotorAngle(self, motor_id=1, angleReverse=False):
        '''
        @deprecated:
        get motor angle
        return value rangle -180 ~ 179
        angleReverse is rotate direction
        '''
        dxl_present_position, dxl_comm_result, dxl_error = self.packetHandler.read4ByteTxRx(
            self.portHandler, motor_id, XM430W350.ADDR_PRO_PRESENT_POSITION)
        if dxl_comm_result != COMM_SUCCESS:
            error_msg = "getPresentMotorAngle Error - {0}, device_path : {1}, and motor id : {2}".format(
                self.packetHandler.getTxRxResult(dxl_comm_result),
                self.device_path, motor_id)
            raise Exception(error_msg)
        elif dxl_error != 0:
            error_msg = "getPresentMotorAngle Error- {0}, device_path : {1}, and motor id : {2}".format(
                self.packetHandler.getRxPacketError(dxl_error),
                self.device_path, motor_id)
            raise Exception(error_msg)
        angle = int(
            interp(dxl_present_position, [
                XM430W350.MINMUM_MOTOR_POSITION, XM430W350.MAX_MOTOR_POSITION
            ], [XM430W350.MIN_ANGLE, XM430W350.MAX_ANGLE]))
        angle = angle - 180

        if angleReverse:
            angle = angle * -1
        return angle

    def get_present_motor_angle(self, motor_id=1, angle_reverse=False):
        '''
        get motor angle
        return value rangle -180 ~ 179
        angle_reverse is rotate direction
        '''
        return self.getPresentMotorAngle(motor_id, angle_reverse)
Example #10
0
## Initiate global variables

## Perhaps create a dictionary for all the attributes of a specific motor
# import modules
import os  # for key presses, reading and writing
from packet_handler import PacketHandler
from port_handler import PortHandler
import AX_constants as AX

# Initialize PortHandler instance
# Set the port path
portHandler = PortHandler(AX.DEVICE_PORT)

# Initialize PacketHandler instance
# Set the protocol version
packetHandler = PacketHandler(AX.DEVICE_PROTOCOL)


def getch():
    """Arguments:
        Return: ch
        Description: commands to get key presses
    """
    if os.name == 'nt':
        import msvcrt
        return msvcrt.getch().decode()
    else:
        import sys, tty, termios
        fd = sys.stdin.fileno()
        old_settings = termios.tcgetattr(fd)
        try: