예제 #1
0
    def _arg_tag(self, tag, context, ros_config, verbose=True):
        """
        Process an <arg> tag.
        """
        try:
            self._check_attrs(tag, context, ros_config, XmlLoader.ARG_ATTRS)
            (name, ) = self.reqd_attrs(tag, context, ('name', ))
            value, default, doc = self.opt_attrs(tag, context,
                                                 ('value', 'default', 'doc'))

            if value is not None and default is not None:
                raise XmlParseException(
                    "<arg> tag must have one and only one of value/default.")

            context.add_arg(name, value=value, default=default, doc=doc)

        except substitution_args.ArgException as e:
            raise XmlParseException(
                "arg '%s' is not defined. \n\nArg xml is %s" %
                (e, tag.toxml()))
        except ResourceNotFound as e:
            raise ResourceNotFound(
                "The following package was not found in {}: {}".format(
                    tag.toxml(), e))
        except Exception as e:
            raise XmlParseException(
                "Invalid <arg> tag: %s. \n\nArg xml is %s" % (e, tag.toxml()))
예제 #2
0
    def get_rosdep_view(self, view_key, verbose=False):
        """
        Get a :class:`RosdepView` associated with *view_key*.  Views
        can be queries to resolve rosdep keys to definitions.

        :param view_key: Name of rosdep view (e.g. ROS stack name), ``str``

        :raises: :exc:`RosdepConflict` if view cannot be created due
          to conflict rosdep definitions.
        :raises: :exc:`rospkg.ResourceNotFound` if *view_key* cannot be located
        :raises: :exc:`RosdepInternalError`
        """
        if view_key in self._view_cache:
            return self._view_cache[view_key]

        # lazy-init
        self._load_view_dependencies(view_key, self.loader)

        # use dependencies to create view
        try:
            dependencies = self.rosdep_db.get_view_dependencies(view_key)
        except KeyError as e:
            # convert to ResourceNotFound.  This should be decoupled
            # in the future
            raise ResourceNotFound(str(e.args[0]))
        # load views in order
        view = self.create_rosdep_view(view_key, dependencies + [view_key], verbose=verbose)
        self._view_cache[view_key] = view
        return view
예제 #3
0
def test_ResourceNotFound():
    from rospkg import ResourceNotFound
    r = ResourceNotFound('blah')
    assert 'blah' == str(r)
    assert r.ros_paths is None
    s = str(r)
    assert 'None' not in s
    assert 'blah' in s

    r = ResourceNotFound('blah', ['ros_root', 'ros_package_path'])
    assert 'blah' == str(r.args[0])
    assert ['ros_root', 'ros_package_path'] == r.ros_paths
    s = str(r)
    print(s)
    assert 'blah' in s
    assert 'ros_root' in s
    assert 'ros_package_path' in s
예제 #4
0
    def __init__(
        self,
        dev_name: str,
        hw_server_name: str = None,
        emotion_core_data_descriptor_json: str = None,
        perception_concept_descriptor_json: str = None,
    ):
        """
        Parameters
        ----------
        dev_name : str
            [description]
        hw_server_name : str, optional
            If not specified, the HW server will not be used, by default None
        emotion_core_data_descriptor_json : str, optional
            If not specified, the data_descriptor server will not be used, by default None
        perception_concept_descriptor_json : str, optional
            If not specified, the perception_concept_descriptor server will not be used, by default None

        Raises
        ------
        ResourceNotFound
            [description]
        """

        self.name = dev_name
        self.hw_server_name = hw_server_name
        self.client_hw_lock = threading.Lock()

        try:
            self.schema_path = RosPack().get_path('aliveos_msgs') + "/json"
        except ResourceNotFound:
            raise ResourceNotFound("Cannot find the aliveos_msgs package")

        self.data_dsc_json = None
        if emotion_core_data_descriptor_json:
            self.data_dsc_json = json_to_dict(
                in_json=emotion_core_data_descriptor_json,
                in_schema=
                f"{self.schema_path}/emotion-core-data-descriptor.json")

        self.p_concept_json = None
        if perception_concept_descriptor_json:
            self.p_concept_json = json_to_dict(
                in_json=perception_concept_descriptor_json,
                in_schema=
                f"{self.schema_path}/perception-concept-descriptor.json")

        # ros clients
        self.client_hw = None
        self.client_emotion_core_data_descriptor = None
        self.client_perception_concept_decriptor = None
        # ros subscribers
        self.subscriber_to_cmd = None
        # ros publishers
        self.publisher_of_sensor_data = None
예제 #5
0
    def __init__(self,
                 name="GenericMindNode",
                 concept_files: list = None,
                 node_type=node_types.GENERIC_NODE):
        self.name = name
        self.node_type = node_type
        self.sensor_cb_thread = None
        self.current_emotion_params = None
        self.current_perception_concept = None
        self.current_perception_concept_mod = None
        # Command concepts
        self.concept_files = concept_files
        # Clients
        self.clt_command_concept = None
        self.clt_command_concept_dsc = None
        self.clt_emotion_core_write = None
        # Subscribers
        self.sub_perception_concept = None
        self.sub_emotion_params = None

        try:
            self.schema_path = RosPack().get_path('aliveos_msgs') + "/json"
        except ResourceNotFound:
            raise ResourceNotFound("Cannot find the aliveos_msgs package")