Beispiel #1
0
    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))
Beispiel #2
0
 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()
Beispiel #3
0
    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
Beispiel #4
0
    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)
Beispiel #5
0
    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