def __init__(self, type, value=None, description="", options=[]): self.type = type #The GUI type of a setting self.value = value #The value of a setting self.description = description # The setting of a setting self.options = options #The options that may be in a setting if type == "mailfolder": self.options = [] self.value = ScriptUtils.getMessageFileList()[0][0] for item in ScriptUtils.getMessageFileList(): self.options.append(item[0]) elif type == "account": self.options = ScriptUtils.getAccountList() self.value = self.options[0] elif type == "extension": self.options = [ "any", ".pdf", ".gif", ".jpg", ".jpeg", ".doc", ".docx", ".zip", ".rar" ] elif type == "option": self.value = self.options[0] elif type == "datetime": self.value = "unspecified" elif type == "text": self.value = "" elif type == "textoptions": self.value = "" elif type == "boolean": if self.value is None: self.value = "true" # default to true """
def __init__ (self, type, value=None, description="", options=[]): self.type = type #The GUI type of a setting self.value = value #The value of a setting self.description = description # The setting of a setting self.options = options #The options that may be in a setting if type == "mailfolder": self.options = [] self.value = ScriptUtils.getMessageFileList()[0][0] for item in ScriptUtils.getMessageFileList(): self.options.append(item[0]) elif type == "account": self.options = ScriptUtils.getAccountList() self.value = self.options[0] elif type == "extension": self.options = ["any", ".pdf", ".gif", ".jpg", ".jpeg", ".doc", ".docx", ".zip", ".rar"] elif type == "option": self.value = self.options[0] elif type == "datetime": self.value = "unspecified" elif type == "text": self.value = "" elif type == "textoptions": self.value = "" elif type == "boolean": if self.value is None: self.value = "true" # default to true """
def __init__(self): self.folders = {} for account in self.settings["Account"].options: self.folders[account] = [] folders = ScriptUtils.getMessageFileList() for folder in ScriptUtils.getMessageFileList(): for account in self.settings["Account"].options: if folder[0].find(account) == 0: self.folders[account].append(folder[1])
def Initialize(self, servers): self.su = script_utils.script_utils() self.util = ScriptUtils(servers) self.sss.Init("tray") self.sss.Init("torso") self.sss.Init("arm") self.sss.Init("sdh") # Move all components to starting positions self.sss.Move("tray", "down", False) self.sss.Move("sdh", "home", False) self.sss.Move("torso", "back", False) self.su.MoveLED("arm", "folded") self.sss.SetLight("green")
def run(self): files = ScriptUtils.getMessageFileList() messages = [] for file in files: for message in mailbox.mbox(file[1]): messages.append(message) return messages
def __init__ (self): '''TODO: check module type...''' self.modulePath = ScriptUtils.getExtensionPath() + os.sep + "modules" for moduleFile in os.listdir(self.modulePath): if moduleFile[-3:] == ".py": # if it's a python file, import it # load python file for module, load class from file try: module = getattr(imp.load_source(moduleFile[:-3], self.modulePath + os.sep + moduleFile), moduleFile[:-3]) except: continue if not ScriptUtils.verifyModule(module): print moduleFile, "not a module" continue if module.isRoot(): self.rootModules.append(module) else: self.nodeModules.append(module)
def appendModule (self, moduleName): # load module print "loading", moduleName module = getattr(imp.load_source(moduleName[:-3], self.modulePath + os.sep + moduleName), moduleName[:-3]) if not ScriptUtils.verifyModule(module): raise Exception self.modules.append(module()) return len(self.modules) - 1
def __init__(self,servers): rospy.init_node('grasp_deliver') self.sss = simple_script_server.simple_script_server() self.su = script_utils.script_utils() self.util = ScriptUtils(servers) self.sss.Init("tray") self.sss.Init("torso") self.sss.Init("arm") self.sss.Init("sdh")
def __init__(self): """TODO: check module type...""" self.modulePath = ScriptUtils.getExtensionPath() + os.sep + "modules" for moduleFile in os.listdir(self.modulePath): if moduleFile[-3:] == ".py": # if it's a python file, import it # load python file for module, load class from file try: module = getattr( imp.load_source(moduleFile[:-3], self.modulePath + os.sep + moduleFile), moduleFile[:-3] ) except: continue if not ScriptUtils.verifyModule(module): print moduleFile, "not a module" continue if module.isRoot(): self.rootModules.append(module) else: self.nodeModules.append(module)
def appendModule(self, moduleName): # load module print "loading", moduleName module = getattr( imp.load_source(moduleName[:-3], self.modulePath + os.sep + moduleName), moduleName[:-3]) if not ScriptUtils.verifyModule(module): raise Exception self.modules.append(module()) return len(self.modules) - 1
class ZipFile(Module): name = "Output to Zip" description = "Outputs files to a zip file" input = "files" root = False settings = { "Output File": Setting("file", ScriptUtils.getHomePath() + os.sep + "tbscriptoutput.zip", "Zip file to put contents into. *Overwrites if exists", ["*.zip"]) } def run(self, input): print "Outputting", len(input), "items" output = zipfile.ZipFile (self.settings["Output File"].value, "w") for file in input: # assume input is set of something... print file.filename output.writestr(file.filename, file.data) output.close()
class Log(Module): name = "Log" description = "Logs a string representation of the given input to a file" input = "any" root = False settings = { "Log Directory": Setting("directory", ScriptUtils.getHomePath(), "Directory to output log file(s) to") } def run(self, input): print "logging", len(input), "items" logfile = open( self.settings["Log Directory"].value + os.sep + "tbscript-" + str(datetime.now()) + ".log", "w") for item in input: # assume input is set of something... logfile.write(str(item)) logfile.close()
class GraspFromCoolerAndDeliver: def __init__(self,servers): rospy.init_node('grasp_deliver') self.sss = simple_script_server.simple_script_server() self.su = script_utils.script_utils() self.util = ScriptUtils(servers) self.sss.Init("tray") self.sss.Init("torso") self.sss.Init("arm") self.sss.Init("sdh") def Initialize(self): # Move all components to starting positions self.sss.Move("tray","down",False) self.sss.Move("sdh","home",False) self.sss.Move("torso","back",False) self.su.MoveLED("arm","folded") self.sss.SetLight("green") def GraspFromCooler(self): rospy.loginfo("Grasping water from cooler...") # start grasping, assuming that Care-O-bot stands right in front of the water cooler handle01 = self.sss.Move("arm","pregrasp",False) self.su.MoveLED("sdh","coolerbuttonup") handle01.wait() # lay finger on cooler button and get water self.su.MoveLED("arm","coolerbutton") self.sss.Move("sdh","coolerbuttondown") self.sss.sleep(3) self.sss.Move("sdh","coolerbuttonup") # move hand to cup and grasp it handle01 = self.sss.Move("arm","coolerpregrasp",False) self.sss.sleep(0.5) self.sss.Move("sdh","cylclosed") handle01.wait() self.sss.Move("sdh","coolercupopen") self.su.MoveLED("arm","coolergrasp") self.sss.Move("sdh","coolercupclosed") # draw hand back and place cup on tablet self.su.MoveLED("arm","coolerpostgrasp") handle01 = self.sss.Move("arm","coolerpostgrasp-to-tablet",False) self.sss.sleep(2) self.sss.Move("torso","front",False) self.sss.Move("tray","up") handle01.wait() self.su.MoveLED("arm","tablet") self.sss.Move("sdh","cuprelease") # draw hand back and fold arm handle01 = self.sss.Move("arm","tablet-to-folded",False) self.sss.sleep(2) self.sss.Move("sdh","home") handle01.wait() return 0 def DriveToCooler(self): rospy.loginfo("Driving to water cooler ...") # get watercooler position from parameters position_param = "script_server/base/watercooler_mm_deg" if not rospy.has_param(position_param): rospy.logerr("parameter %s does not exist on ROS Parameter Server, aborting...",position_param) return -2 else: position = rospy.get_param(position_param) handle01 = self.sss.Move("torso","back",False) self.util.movePlatformWait(*position) handle01.wait() return 0 def DeliverDrink(self): rospy.loginfo("Delivering drink ...") # drive to delivery position at the table position_param = "script_server/base/table_mm_deg" if not rospy.has_param(position_param): rospy.logerr("parameter %s does not exist on ROS Parameter Server, aborting...",position_param) return -2 else: position = rospy.get_param(position_param) handle01 = self.sss.Move("torso","front",False) self.util.movePlatformWait(*position) handle01.wait() # offer drink handle01 = self.sss.Move("torso","left",False) self.su.SpeakRandom("offer") handle01.wait() self.sss.Move("torso","right") self.sss.Move("torso","front") # check if drink has been taken and thank user taken_param = self.sss.wait_for_input() if taken_param == "\n": handle01 = self.sss.Move("torso","bow",False) self.su.SpeakRandom("taken") handle01.wait() self.sss.sleep(0.5) # back away and fold tablet if possible position_param = "script_server/base/watercooler_mm_deg" if not rospy.has_param(position_param): rospy.logerr("parameter %s does not exist on ROS Parameter Server, aborting...",position_param) return -2 else: position = rospy.get_param(position_param) self.util.movePlatformWait(*position) if taken_param == "\n": self.sss.Move("tray","down",False) return 0 def Run(self): #self.Initialize() #self.DriveToCooler() #self.GraspFromCooler() #self.DeliverDrink() #self.sss.Move("sdh","coolercupopen") #self.su.MoveLED("arm","coolergrasp") #self.sss.wait_for_input() #self.sss.Move("sdh","coolercupclosed") #self.su.MoveLED("arm","grasp-to-tablet") self.su.MoveLED("arm","tablet-to-folded")
def __init__(self): self.folders = {} for item in ScriptUtils.getMessageFileList(): self.folders[item[0]] = item[1]
def __init__ (self): self.modulePath = ScriptUtils.getExtensionPath() + os.sep + "modules" self.mf = components.classes["@tbscript.wm.edu/ModuleFactory;1"].\ getService(components.interfaces.IModuleFactory)
class GraspFromCoolerAndDeliver(ssscript): def Initialize(self, servers): self.su = script_utils.script_utils() self.util = ScriptUtils(servers) self.sss.Init("tray") self.sss.Init("torso") self.sss.Init("arm") self.sss.Init("sdh") # Move all components to starting positions self.sss.Move("tray", "down", False) self.sss.Move("sdh", "home", False) self.sss.Move("torso", "back", False) self.su.MoveLED("arm", "folded") self.sss.SetLight("green") def GraspFromCooler(self): rospy.loginfo("Grasping water from cooler...") # start grasping, assuming that Care-O-bot stands right in front of the water cooler handle01 = self.sss.Move("arm", "pregrasp", False) self.su.MoveLED("sdh", "coolerbuttonup") handle01.wait() # lay finger on cooler button and get water self.su.MoveLED("arm", "coolerbutton") self.sss.Move("sdh", "coolerbuttondown") self.sss.sleep(3) self.sss.Move("sdh", "coolerbuttonup") # move hand to cup and grasp it handle01 = self.sss.Move("arm", "coolerpregrasp", False) self.sss.sleep(0.5) self.sss.Move("sdh", "cylclosed") handle01.wait() self.sss.Move("sdh", "coolercupopen") self.su.MoveLED("arm", "coolergrasp") self.sss.Move("sdh", "coolercupclosed") # draw hand back and place cup on tablet self.su.MoveLED("arm", "coolerpostgrasp") handle01 = self.sss.Move("arm", "coolerpostgrasp-to-tablet", False) self.sss.sleep(2) self.sss.Move("torso", "front", False) self.sss.Move("tray", "up") handle01.wait() self.su.MoveLED("arm", "tablet") self.sss.Move("sdh", "cuprelease") # draw hand back and fold arm handle01 = self.sss.Move("arm", "tablet-to-folded", False) self.sss.sleep(2) self.sss.Move("sdh", "home") handle01.wait() return 0 def DriveToCooler(self): rospy.loginfo("Driving to water cooler ...") # get watercooler position from parameters position_param = "script_server/base/watercooler_mm_deg" if not rospy.has_param(position_param): rospy.logerr( "parameter %s does not exist on ROS Parameter Server, aborting...", position_param) return -2 else: position = rospy.get_param(position_param) handle01 = self.sss.Move("torso", "back", False) self.util.movePlatformWait(*position) handle01.wait() return 0 def DeliverDrink(self): rospy.loginfo("Delivering drink ...") # drive to delivery position at the table position_param = "script_server/base/table_mm_deg" if not rospy.has_param(position_param): rospy.logerr( "parameter %s does not exist on ROS Parameter Server, aborting...", position_param) return -2 else: position = rospy.get_param(position_param) handle01 = self.sss.Move("torso", "front", False) self.util.movePlatformWait(*position) handle01.wait() # offer drink handle01 = self.sss.Move("torso", "left", False) self.su.SpeakRandom("offer") handle01.wait() self.sss.Move("torso", "right") self.sss.Move("torso", "front") # check if drink has been taken and thank user taken_param = self.sss.wait_for_input() if taken_param == "\n": handle01 = self.sss.Move("torso", "bow", False) self.su.SpeakRandom("taken") handle01.wait() self.sss.sleep(0.5) # back away and fold tablet if possible position_param = "script_server/base/watercooler_mm_deg" if not rospy.has_param(position_param): rospy.logerr( "parameter %s does not exist on ROS Parameter Server, aborting...", position_param) return -2 else: position = rospy.get_param(position_param) self.util.movePlatformWait(*position) if taken_param == "\n": self.sss.Move("tray", "down", False) return 0 def run(self): self.Initialize() self.DriveToCooler() self.GraspFromCooler() self.DeliverDrink() self.sss.Move("sdh", "coolercupopen") self.su.MoveLED("arm", "coolergrasp") self.sss.wait_for_input() self.sss.Move("sdh", "coolercupclosed") self.su.MoveLED("arm", "grasp-to-tablet") self.su.MoveLED("arm", "tablet-to-folded")
def __init__(self): self.modulePath = ScriptUtils.getExtensionPath() + os.sep + "modules" self.mf = components.classes["@tbscript.wm.edu/ModuleFactory;1"].\ getService(components.interfaces.IModuleFactory)