def setUp(self): self.run_id = 'test_perception' config = roslaunch.config.ROSLaunchConfig() config.add_node( core.Node(package='perception', node_type='joint_state_publisher.py', name='state_publisher')) self.joints = [ 'Eyes_Pitch', 'Eye_L', 'Eye_R', 'roll_base_joint', 'pitch_base_joint', 'yaw_joint', 'roll_neck_joint', 'pitch_neck_joint' ] config.add_param( core.Param('/state_publisher/pau_joints', ';'.join(self.joints))) config.add_node( core.Node(package='perception', node_type='faces_tf2_broadcaster.py', name='faces_broadcaster')) self.runner = roslaunch.launch.ROSLaunchRunner(self.run_id, config, is_rostest=True) self.runner.launch() for node in config.nodes: wait_for('%s/%s' % (node.namespace, node.name))
def setUp(self): self.run_id = 'test_eva_behavior' config = roslaunch.config.ROSLaunchConfig() self.node = core.Node(package='eva_behavior', node_type='main.py', name='Eva_behavior') config.add_node(self.node) self.runner = roslaunch.launch.ROSLaunchRunner(self.run_id, config) self.runner.launch()
def setUp(self): blender_api_path = os.path.join( rospkg.RosPack().get_path('blender_api_msgs'), '../blender_api') config = roslaunch.config.ROSLaunchConfig() config.add_node( core.Node(package='blender_api_msgs', node_type='blender', args='-y %s/Sophia.blend -P %s/autostart.py' % (blender_api_path, blender_api_path), name='blender_api')) self.runner = roslaunch.launch.ROSLaunchRunner(self.run_id, config, is_rostest=True) self.runner.launch() for node in config.nodes: wait_for('%s/%s' % (node.namespace, node.name)) time.sleep(5) # Wait for blender rendering done
def process(self, loader, ros_launch_config): context = loader.root_context # Add all our params to the ROSLaunchConfig param_ns = context.child(self.node_name) for name, value in self.params.iteritems(): loader_value = loader.param_value(self.verbose, name, 'auto', py_types_to_string(value), None, None, None) p = rr.Param(param_ns.ns + name, loader_value) ros_launch_config.add_param(p, verbose=self.verbose) for rp in self.rosparams: if rp.get_namespace() is None: rp.set_namespace(param_ns.ns) else: rp.set_namespace(rn.ns_join(param_ns.ns, rp.get_namespace())) rp.process(loader, ros_launch_config) # Add to a LoaderContext verify that names are legal remap_ns = context.child('') for r in self.remaps: remap_ns.add_remap(r) # Create our node self.node = rr.Node( self.package_name, self.node_type, self.node_name, remap_args=remap_ns.remap_args(), # Setting this pipes mutes the node's stdout. # namespace=param_ns.ns, namespace=self.namespace, args=self.args, respawn=self.respawn, respawn_delay=self.respawn_delay, output=self.output, launch_prefix=self.launch_prefix) ros_launch_config.add_node(self.node, self.verbose)
def setUp(self): self.run_id = 'test_robot' rospack = rospkg.RosPack() config = roslaunch.config.ROSLaunchConfig() self.test_data_path = '%s/test_data' % CWD tts_path = rospack.get_path('tts') self.tts_output = os.path.join(tts_path, 'tmp') files = glob.glob('%s/*.wav' % self.tts_output) if files: shutil.rmtree('%s.bak' % self.tts_output) shutil.move(self.tts_output, '%s.bak' % self.tts_output) os.makedirs(self.tts_output) self.output_video = '%s/output_video' % CWD if not os.path.isdir(self.output_video): os.makedirs(self.output_video) self.output_audio = '%s/output_audio' % CWD if not os.path.isdir(self.output_audio): os.makedirs(self.output_audio) # blender_api blender_api_path = os.path.join(rospack.get_path('blender_api_msgs'), '../blender_api') config.add_node( core.Node(package='blender_api_msgs', node_type='blender', args='-y %s/Eva.blend -P %s/autostart.py' % (blender_api_path, blender_api_path), name='blender_api')) # eva_behavior eva_behavior_path = rospack.get_path('eva_behavior') self.behavior_config = ConfigParser.ConfigParser() config_file = os.path.join(eva_behavior_path, 'behavior.cfg') self.behavior_config.read(config_file) config.add_node( core.Node(package='eva_behavior', node_type='main.py', name='Eva_behavior')) # pi_face_tracker config_file = os.path.join(rospack.get_path('pi_face_tracker'), 'launch', 'face_tracker_usb_cam.launch') loader = roslaunch.xmlloader.XmlLoader() loader.load(config_file, config) # tts config.add_node( core.Node(package='tts', node_type='tts_talker.py', name='tts')) # chatbot config.add_node( core.Node(package='chatbot', node_type='ai.py', args='%s/../../chatbot/aiml' % CWD, name='chatbot_ai')) config.add_param(core.Param('/tts/topic_name', 'chatbot_responses')) self.runner = roslaunch.launch.ROSLaunchRunner(self.run_id, config, is_rostest=True) self.display = os.environ.get('DISPLAY', ':0') if not self.display == ':0': startxvfb(self.display) self.runner.launch() for node in config.nodes: wait_for('%s/%s' % (node.namespace, node.name)) time.sleep(15) # Wait for blender rendering done and chatbot