Ejemplo n.º 1
0
def _make_predicate(type_name, parameters):

    new_type_name, is_negative = _is_predicate_negative(type_name)
    kb_item = KnowledgeItem()
    kb_item.knowledge_type = KB_ITEM_FACT
    kb_item.is_negative = is_negative
    kb_item.attribute_name = new_type_name
    kb_item.values = dict_to_keyval(parameters)
    return kb_item
Ejemplo n.º 2
0
def _action_receiver(msg):

    global action_ids
    actions = _list_actions()

    rospy.loginfo("[RPpt][AIF] a message is received: '%d', '%s'" % (msg.action_id, msg.name))
    rospy.loginfo(actions)

    if msg.name in actions:

        action_name = msg.name
        rospy.loginfo("[RPpt][AIF] start '%s' action" % action_name)

        try:
            action = actions[action_name](msg.action_id, msg.dispatch_time,
                                          feedback,
                                          keyval_to_dict(msg.parameters))
            action_ids[msg.action_id] = action

            if issubclass(action.__class__, ActionSink):
                action.execute(action_name, **keyval_to_dict(msg.parameters))
            else:
                action.execute(**keyval_to_dict(msg.parameters))

        except Exception as e:
            rospy.logwarn("[RPpt][AIF] action '%s' failed." % msg.name, exc_info=1)
            feedback.publish(ActionFeedback(msg.action_id,
                                            "action failed",
                                            dict_to_keyval(None)))
    elif msg.action_id in action_ids:

        operation = msg.name
        rospy.loginfo("[RPpt][AIF] update action '%d', doing '%s'" % (msg.action_id, operation))

        if operation == "cancel_action":
            action_ids[msg.action_id].cancel()
        elif operation == "pause_action":
            action_ids[msg.action_id].pause()
        elif operation == "resume_action":
            action_ids[msg.action_id].resume()

    else:
        rospy.loginfo("[RPpt][AR] no operation")
Ejemplo n.º 3
0
 def _feedback(self, status, info=None):
     self.feedback_pub.publish(ActionFeedback(self.action_id,
                                              status,
                                              dict_to_keyval(info)))
Ejemplo n.º 4
0
def send_action(name, **kwargs):
    msg = ActionDispatch()
    msg.name = name
    msg.parameters = dict_to_keyval(kwargs)

    _action_dispatch_publisher.publish(msg)