Example #1
0
    def __init__(self, rob_self):
        # this could be done extracting a property from the knowledge base
        self._rob_self = rob_self

        # start move_base client and wait for the server
        self._client = actionlib.SimpleActionClient(
            'move_base', move_base_msgs.msg.MoveBaseAction)
        self.loginfo("Waiting for move_base server")
        self._client.wait_for_server()

        # get goals through this service
        rospy.Service('move_coordinator/goal', Goal, self.setup_goal)

        # get move_base updates
        rospy.Subscriber("move_base/result", MoveBaseActionResult,
                         self.new_result)
        # get robot knowledge updates
        rospy.Service('move_coordinator/status_update', Empty,
                      self.check_and_run)

        # publish successfull results
        self._result = rospy.Publisher('move_coordinator/result',
                                       MoveBaseActionResult)
        self._status_pub = rospy.Publisher('/' + self._rob_self + '/status',
                                           Status)

        # interface to prolog
        self.loginfo("Waiting for json_prolog server")
        rospy.wait_for_service('json_prolog/simple_query')
        self._prolog = json_prolog.Prolog('json_prolog')

        self.loginfo("move_coordinator up and running")
Example #2
0
def listener():
    rospy.init_node('medicineTest', anonymous=False)
    rospy.Subscriber('xfspeech', String, listenCallback)
    prolog = json_prolog.Prolog()
    query = prolog.query("owl_has(herb:'名称',P,O)")

    for sol in query.solutions():
        print sol
    query.finish()
    rospy.spin()
Example #3
0
def listenCallback(data):
    request = data.data
    print "get voice"
    rospy.loginfo(rospy.get_caller_id() + 'I heard %s', request)
    prolog = json_prolog.Prolog()
    query = prolog.query("owl_has(herb:'data.data',P,O)")

    for sol in query.solutions():
        print sol
    query.finish()
    rospy.spin()
Example #4
0
def query_knowrob_properties(obj):
    prolog = json_prolog.Prolog()
    query = prolog.query("owl_has('%s', P, O)." % obj)
    
    was_empty = True
    for sol in query.solutions():
        was_empty = False
        rospy.loginfo('\tP = %s; O = %s' % (sol['P'], sol['O']))
        
    query.finish()
    
    if was_empty: rospy.loginfo('\tNo properties')
Example #5
0
def query_knowrob(query):
    prolog = json_prolog.Prolog()
    obj = str(KNOWROB[query['theme']])
    rospy.loginfo('Looking for %s in knowrob knowledge base' % obj)
    query = prolog.query("owl_has(A, '%s', '%s')." % (str(RDF['type']), obj))
    rospy.loginfo('Prolog query complete')
    
    was_empty = True
    for sol in query.solutions():
        was_empty = False
        rospy.loginfo('Found solution.  A = %s' % sol['A'])
        query_knowrob_properties(sol['A'])
        
    query.finish()
    
    if was_empty: rospy.logwarn('Could not find %s' % obj)
Example #6
0
    def __init__(self, rob_self, rob_list):

        self._rob_self = rob_self
        self._rob_list = rob_list

        self.loginfo("Waiting for json_prolog server")
        rospy.wait_for_service('json_prolog/simple_query')
        self._prolog = json_prolog.Prolog("json_prolog")

        # for each robot in the robot list
        for robot in [x for x in self._rob_list if x != self._rob_self]:
            self._rob_timing[robot] = 0.00
            rospy.Subscriber("/" + robot + "/odom", Odometry,
                             self.position_callback(robot))
            rospy.Subscriber("/" + robot + "/status", Status,
                             self.status_callback(robot))

        self.loginfo("robot_logger up and running")
Example #7
0
#!/usr/bin/env python

import roslib
roslib.load_manifest('json_prolog')

import rospy
import json_prolog

if __name__ == '__main__':
    rospy.init_node('test_json_prolog')
    prolog = json_prolog.Prolog()
    query = prolog.query("member(A, [1, 2, 3, 4]), B = ['x', A]")
    for solution in query.solutions():
        print 'Found solution. A = %s, B = %s' % (solution['A'], solution['B'])
    query.finish()
Example #8
0
    objects2type = {}
    objects = []
    for inst, issue in zip(frames[0]['instance_ids'], frames[0]['issue_ids']):
        for inst_number in inst:
            inst_number -= 1
        for issue_number in issue:
            issue_number -= 1
        obj_name = '%s_%d' % (classes[issue_number], inst_number)
        objects2type[obj_name] = classes[issue_number]
        objects.append(obj_name)
    print 'objects:'
    print objects

    # start json-prolog
    rospy.init_node('tracking2knowrob', anonymous=True)
    knowrob = json_prolog.Prolog()

    # ask knowrob for object features
    object_store = []
    for o in objects:
        o_type = objects2type[o]
        obj = Object(o)
        object_store.append(obj)
        if not o_type in concept_map: continue
        print 'Object: %s' % obj.name
        query = knowrob.query("object_feature(%s, ITasCFeatureT, Pos, Dir)" %
                              concept_map[o_type])
        counters = [1] * 3
        for s in query.solutions():
            featureT = s['ITasCFeatureT']
            pos = numpy.matrix(s['Pos']).transpose()