enable to set logLevel as objects arguments and add support for newest Ur controllers
This commit is contained in:
parent
ea0a50b3da
commit
513b17b090
@ -29,8 +29,9 @@ class ParsingException(Exception):
|
|||||||
|
|
||||||
|
|
||||||
class ParserUtils(object):
|
class ParserUtils(object):
|
||||||
def __init__(self):
|
def __init__(self, logLevel=logging.WARN):
|
||||||
self.logger = logging.getLogger(__name__)
|
self.logger = logging.getLogger(__name__)
|
||||||
|
self.logger.setLevel(logLevel)
|
||||||
|
|
||||||
def parse(self, data):
|
def parse(self, data):
|
||||||
"""
|
"""
|
||||||
@ -62,6 +63,11 @@ class ParserUtils(object):
|
|||||||
elif ptype == 2:
|
elif ptype == 2:
|
||||||
allData["ToolData"] = self._get_data(pdata, "iBbbddfBffB" , ("size", "type", "analoginputRange2", "analoginputRange3", "analogInput2", "analogInput3", "toolVoltage48V", "toolOutputVoltage", "toolCurrent", "toolTemperature", "toolMode" ))
|
allData["ToolData"] = self._get_data(pdata, "iBbbddfBffB" , ("size", "type", "analoginputRange2", "analoginputRange3", "analogInput2", "analogInput3", "toolVoltage48V", "toolOutputVoltage", "toolCurrent", "toolTemperature", "toolMode" ))
|
||||||
|
|
||||||
|
#elif ptype == 8:
|
||||||
|
#allData["varMessage"] = self._get_data(pdata, "!iBQbb iiBAcAc", ("size", "type", "timestamp", "source", "robotMessageType", "code", "argument", "titleSize", "messageTitle", "messageText"))
|
||||||
|
#elif ptype == 7:
|
||||||
|
#allData["keyMessage"] = self._get_data(pdata, "!iBQbb iiBAcAc", ("size", "type", "timestamp", "source", "robotMessageType", "code", "argument", "titleSize", "messageTitle", "messageText"))
|
||||||
|
|
||||||
elif ptype == 20:
|
elif ptype == 20:
|
||||||
tmp = self._get_data(pdata, "!iB Qbb", ("size", "type", "timestamp", "source", "robotMessageType"))
|
tmp = self._get_data(pdata, "!iB Qbb", ("size", "type", "timestamp", "source", "robotMessageType"))
|
||||||
if tmp["robotMessageType"] == 3:
|
if tmp["robotMessageType"] == 3:
|
||||||
@ -81,9 +87,9 @@ class ParserUtils(object):
|
|||||||
elif tmp["robotMessageType"] == 5:
|
elif tmp["robotMessageType"] == 5:
|
||||||
allData["keyMessage"] = self._get_data(pdata, "!iBQbb iiAc", ("size", "type", "timestamp", "source", "robotMessageType", "code", "argument", "messageText"))
|
allData["keyMessage"] = self._get_data(pdata, "!iBQbb iiAc", ("size", "type", "timestamp", "source", "robotMessageType", "code", "argument", "messageText"))
|
||||||
else:
|
else:
|
||||||
print("Message type parser not implemented ", tmp)
|
self.logger.debug("Message type parser not implemented ", tmp)
|
||||||
else:
|
else:
|
||||||
print("Uknown packet type %s with size %s" % (ptype, psize))
|
self.logger.debug("Unknown packet type %s with size %s" % (ptype, psize))
|
||||||
|
|
||||||
return allData
|
return allData
|
||||||
|
|
||||||
@ -156,17 +162,21 @@ class ParserUtils(object):
|
|||||||
while True:
|
while True:
|
||||||
if len(data) >= 5:
|
if len(data) >= 5:
|
||||||
psize, ptype = self.get_header(data)
|
psize, ptype = self.get_header(data)
|
||||||
if psize < 5 or psize > 500 or ptype != 16:
|
if psize < 5 or psize > 2000 or ptype != 16:
|
||||||
data = data[1:]
|
data = data[1:]
|
||||||
elif len(data) > psize:
|
counter += 1
|
||||||
|
elif len(data) >= psize:
|
||||||
|
self.logger.debug("Got packet with size {0} and type {1}".format(psize, ptype))
|
||||||
if counter:
|
if counter:
|
||||||
self.logger.info("Remove {} bytes of garbage at begining of packet".format(counter))
|
self.logger.info("Remove {0} bytes of garbage at begining of packet".format(counter))
|
||||||
#ok we we have somehting which looks like a packet"
|
#ok we we have somehting which looks like a packet"
|
||||||
return (data[:psize], data[psize:])
|
return (data[:psize], data[psize:])
|
||||||
else:
|
else:
|
||||||
#packet is not complete
|
#packet is not complete
|
||||||
|
self.logger.debug("Packet is not complete, advertised size is {0}, received size is {1}, type is {2}".format(psize, len(data), ptype))
|
||||||
return None
|
return None
|
||||||
else:
|
else:
|
||||||
|
self.logger.debug("data smaller than 5 bytes")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
@ -175,10 +185,11 @@ class SecondaryMonitor(Thread):
|
|||||||
"""
|
"""
|
||||||
Monitor data from secondary port and send programs to robot
|
Monitor data from secondary port and send programs to robot
|
||||||
"""
|
"""
|
||||||
def __init__(self, host):
|
def __init__(self, host, logLevel=logging.WARN):
|
||||||
Thread.__init__(self)
|
Thread.__init__(self)
|
||||||
self.logger = logging.getLogger(self.__class__.__name__)
|
self.logger = logging.getLogger(self.__class__.__name__)
|
||||||
self._parser = ParserUtils()
|
self.logger.setLevel(logLevel)
|
||||||
|
self._parser = ParserUtils(logLevel)
|
||||||
self._s_secondary = None
|
self._s_secondary = None
|
||||||
self._dict = {}
|
self._dict = {}
|
||||||
self._dictLock = Lock()
|
self._dictLock = Lock()
|
||||||
@ -257,6 +268,7 @@ class SecondaryMonitor(Thread):
|
|||||||
self._dataqueue = ans[1]
|
self._dataqueue = ans[1]
|
||||||
return ans[0]
|
return ans[0]
|
||||||
else:
|
else:
|
||||||
|
self.logger.debug("Could not find packet in received data")
|
||||||
tmp = self._s_secondary.recv(1024)
|
tmp = self._s_secondary.recv(1024)
|
||||||
self._dataqueue += tmp
|
self._dataqueue += tmp
|
||||||
|
|
||||||
|
12
urx/urx.py
12
urx/urx.py
@ -90,14 +90,15 @@ class URRobot(object):
|
|||||||
The RT interfaces is only used for the getForce related methods
|
The RT interfaces is only used for the getForce related methods
|
||||||
Rmq: A program sent to the robot i executed immendiatly and any running program is stopped
|
Rmq: A program sent to the robot i executed immendiatly and any running program is stopped
|
||||||
"""
|
"""
|
||||||
def __init__(self, host, useRTInterface=False):
|
def __init__(self, host, useRTInterface=False, logLevel=logging.WARN):
|
||||||
self.logger = logging.getLogger(self.__class__.__name__)
|
self.logger = logging.getLogger(self.__class__.__name__)
|
||||||
if len(logging.root.handlers) == 0: #dirty hack
|
if len(logging.root.handlers) == 0: #dirty hack
|
||||||
logging.basicConfig()
|
logging.basicConfig()
|
||||||
|
self.logger.setLevel(logLevel)
|
||||||
self.host = host
|
self.host = host
|
||||||
|
|
||||||
self.logger.info("Opening secondary monitor socket")
|
self.logger.info("Opening secondary monitor socket")
|
||||||
self.secmon = ursecmon.SecondaryMonitor(self.host) #data from robot at 10Hz
|
self.secmon = ursecmon.SecondaryMonitor(self.host, logLevel=logLevel) #data from robot at 10Hz
|
||||||
|
|
||||||
if useRTInterface:
|
if useRTInterface:
|
||||||
self.logger.info("Opening real-time monitor socket")
|
self.logger.info("Opening real-time monitor socket")
|
||||||
@ -386,11 +387,12 @@ class Robot(object):
|
|||||||
and includes support for calibrating the robot coordinate system
|
and includes support for calibrating the robot coordinate system
|
||||||
and style portet to PEP 8
|
and style portet to PEP 8
|
||||||
"""
|
"""
|
||||||
def __init__(self, host, useRTInterface=False):
|
def __init__(self, host, useRTInterface=False, logLevel = logging.WARN):
|
||||||
self.robot = URRobot(host, useRTInterface)
|
self.robot = URRobot(host, useRTInterface, logLevel=logLevel)
|
||||||
self.logger = logging.getLogger(self.__class__.__name__)
|
self.logger = logging.getLogger(self.__class__.__name__)
|
||||||
if len(logging.root.handlers) == 0: #dirty hack
|
if len(logging.root.handlers) == 0: #dirty hack
|
||||||
logging.basicConfig()
|
logging.basicConfig()
|
||||||
|
self.logger.setLevel(logLevel)
|
||||||
self.default_linear_acceleration = 0.01
|
self.default_linear_acceleration = 0.01
|
||||||
self.default_linear_velocity = 0.01
|
self.default_linear_velocity = 0.01
|
||||||
|
|
||||||
@ -476,7 +478,7 @@ class Robot(object):
|
|||||||
else:
|
else:
|
||||||
self.apply_transform(t, acc, vel, wait)
|
self.apply_transform(t, acc, vel, wait)
|
||||||
|
|
||||||
def movel_tool(self, pose, acc=None, vel=None, wait=True):
|
def movel_t(self, pose, acc=None, vel=None, wait=True):
|
||||||
"""
|
"""
|
||||||
move linear to given pose in tool coordinate
|
move linear to given pose in tool coordinate
|
||||||
"""
|
"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user