def test_world_model_and_recognizer_prediction(self):
        world_model_reset = rospy.ServiceProxy(
            '/env/asr_world_model/empty_found_object_list', Empty)
        rp_ism_node_reset = rospy.ServiceProxy('/rp_ism_node/reset', Empty)

        world_model_reset()
        rp_ism_node_reset()

        world_model_reset = rospy.ServiceProxy(
            '/env/asr_world_model/empty_found_object_list', Empty)
        world_model_reset()

        req = PushFoundObjectRequest()
        detected_pbd_object = AsrObject()
        detected_pbd_object.type = 'CoffeeBox'
        detected_pbd_object.header.frame_id = '/map'
        detected_pbd_object.identifier = ''
        detected_pbd_object.providedBy = 'textured'
        detected_pbd_object.colorName = 'textured'
        detected_pbd_object.meshResourcePath = 'package://asr_object_database/rsc/databases/textured_objects/CoffeeBox/CoffeeBox.dae'

        detected_pose = Pose()
        detected_pose.position.x = 1
        detected_pose.position.y = 2
        detected_pose.position.z = 3
        detected_pose.orientation.w = 0.695641823146944
        detected_pose.orientation.x = -0.702895791692416
        detected_pose.orientation.y = -0.102411625776331
        detected_pose.orientation.z = 0.107386306462868

        detected_pose_with_covariance = PoseWithCovariance()
        detected_pose_with_covariance.pose = detected_pose
        detected_pbd_object.sampledPoses.append(detected_pose_with_covariance)

        push_found_object = rospy.ServiceProxy(
            '/env/asr_world_model/push_found_object', PushFoundObject)
        push_found_object(detected_pbd_object)

        get_found_objects = rospy.ServiceProxy(
            '/env/asr_world_model/get_found_object_list', GetFoundObjectList)
        resp = get_found_objects()
        self.assertEqual(len(resp.object_list), 1)

        for found_object in resp.object_list:
            self.assertEqual(len(found_object.sampledPoses), 1)

        find_scenes = rospy.ServiceProxy('/rp_ism_node/find_scenes',
                                         FindScenes)
        find_scenes_req = FindScenesRequest()
        for pbd_object in resp.object_list:
            find_scenes_req.objects.append(pbd_object)
        find_scenes_resp = find_scenes(find_scenes_req)

        self.assertGreater(find_scenes_resp.result_size, 0)

        rp_ism_node_predict = rospy.ServiceProxy(
            '/rp_ism_node/get_point_cloud', GetPointCloud)
        pose_prediction_resp = rp_ism_node_predict()
        self.assertGreater(len(pose_prediction_resp.point_cloud.elements), 500)
Esempio n. 2
0
def rosbagPdbObjectMessage(bag, posX, posY, posZ, oriW, oriX, oriY, oriZ,
                           objType):

    # build object ...
    msg = AsrObject()
    msg.header.stamp = rospy.Time.now()
    msg.header.frame_id = '/PTU'
    msg.providedBy = 'textured'
    msg.poseEstimation.pose.position.x = posX
    msg.poseEstimation.pose.position.y = posY
    msg.poseEstimation.pose.position.z = posZ
    msg.poseEstimation.pose.orientation.w = oriW
    msg.poseEstimation.pose.orientation.x = oriX
    msg.poseEstimation.pose.orientation.y = oriY
    msg.poseEstimation.pose.orientation.z = oriZ
    msg.type = objType

    # ... and write it into bag file
    bag.write('/stereo/objects', msg)
Esempio n. 3
0
def publishPdbObjectMessage(pub, posX, posY, posZ, oriW, oriX, oriY, oriZ,
                            objType):

    # build object ...
    msg = AsrObject()
    msg.header.stamp = rospy.Time.now()
    msg.header.frame_id = '/PTU'
    msg.providedBy = 'textured'
    msg.poseEstimation.pose.position.x = posX
    msg.poseEstimation.pose.position.y = posY
    msg.poseEstimation.pose.position.z = posZ
    msg.poseEstimation.pose.orientation.w = oriW
    msg.poseEstimation.pose.orientation.x = oriX
    msg.poseEstimation.pose.orientation.y = oriY
    msg.poseEstimation.pose.orientation.z = oriZ
    msg.type = objType

    # ... and publish it
    pub.publish(msg)
Esempio n. 4
0
def main():
    req = FindScenesRequest()
    objects = []
    obj = AsrObject()
    obj.type = 'CupPdV'


    obj.poseEstimation.pose.position.x = -0.895672837120925
    obj.poseEstimation.pose.position.y = 0.876364548041306
    obj.poseEstimation.pose.position.z = 0.675630282005366
    obj.poseEstimation.pose.orientation.w = 0.0438159930101303
    obj.poseEstimation.pose.orientation.x = -0.00274503713451766
    obj.poseEstimation.pose.orientation.y = -0.673982743489664
    obj.poseEstimation.pose.orientation.z = 0.737441445137044

    obj1 = AsrObject()
    obj1.type = 'PlateDeep'
    obj1.poseEstimation.pose.position.x = -0.884891287861248
    obj1.poseEstimation.pose.position.y = 0.639571172744163
    obj1.poseEstimation.pose.position.z = 0.660505174542679
    obj1.poseEstimation.pose.orientation.w = 0.650782548685679
    obj1.poseEstimation.pose.orientation.x = -0.64554621902581
    obj1.poseEstimation.pose.orientation.y = -0.27131992194386
    obj1.poseEstimation.pose.orientation.z = 0.293492169203933

    objects.append(obj)
    objects.append(obj1)

    try:
        rospy.wait_for_service('/rp_ism_node/find_scenes', timeout=5)
    except rospy.exceptions.ROSException, e:
        rospy.loginfo('Could not reach service')
def detection_callback(data):
    global detected_objects
        # found object for the first time 
    rospy.loginfo("Found " + data.type)
    
    if ( len(data.sampledPoses) == 0 ):
	rospy.logerr("Got a AsrObject without poses.")
	sys.exit(1)
    
    # Construct FoundObject to push to world_model
    # objects are transformed to map frame in world_model
    object = AsrObject()
    object = data
    detected_objects.append(object)
def get_smacks():
    obj = AsrObject()
    obj.type = 'Smacks'
    obj.header.frame_id = '/camera_left_frame'
    obj.identifier = '0'
    obj.providedBy = 'textured'
    obj.colorName = 'textured'
    obj.meshResourcePath = 'package://asr_object_database/rsc/databases/textured_objects/Smacks/Smacks.dae'
    pose_cov = PoseWithCovariance()
    pose_cov.pose.position.x = random.gauss(0, 0.5)
    pose_cov.pose.position.y = random.gauss(0, 0.5)
    pose_cov.pose.position.z = 1.12
    q = tf.transformations.quaternion_from_euler(90, 0, 0, 'rzyx')
    pose_cov.pose.orientation = Quaternion(*q)
    obj.sampledPoses.append(pose_cov)
    return obj
    def test_world_model_with_1_object(self):

        world_model_reset = rospy.ServiceProxy(
            '/env/asr_world_model/empty_found_object_list', Empty)
        world_model_reset()

        req = PushFoundObjectRequest()
        detected_pbd_object = AsrObject()
        detected_pbd_object.type = 'CoffeeBox'
        detected_pbd_object.header.frame_id = 'camera_left_frame'
        detected_pbd_object.identifier = ''
        detected_pbd_object.providedBy = 'textured'
        detected_pbd_object.colorName = 'textured'
        detected_pbd_object.meshResourcePath = 'package://asr_object_database/rsc/databases/textured_objects/CoffeeBox/CoffeeBox.dae'

        detected_pose = Pose()
        detected_pose.position.x = 1
        detected_pose.position.y = 2
        detected_pose.position.z = 3
        detected_pose.orientation.w = 0.695641823146944
        detected_pose.orientation.x = -0.702895791692416
        detected_pose.orientation.y = -0.102411625776331
        detected_pose.orientation.z = 0.107386306462868

        detected_pose_with_c = PoseWithCovariance()
        detected_pose_with_c.pose = detected_pose

        detected_pbd_object.sampledPoses.append(detected_pose_with_c)

        push_found_object = rospy.ServiceProxy(
            '/env/asr_world_model/push_found_object', PushFoundObject)
        push_found_object(detected_pbd_object)

        get_found_objects = rospy.ServiceProxy(
            '/env/asr_world_model/get_found_object_list', GetFoundObjectList)
        resp = get_found_objects()
        self.assertEqual(len(resp.object_list), 1)

        for found_object in resp.object_list:
            self.assertEqual(len(found_object.sampledPoses), 1)
def main():
    req = FindScenesRequest()
    objects = []
    obj = AsrObject()
    obj.type = 'Knaeckebrot'
    obj.header.frame_id = '/camera_left_frame'
    obj.identifier = ''
    obj.providedBy = 'textured'
    obj.colorName = 'textured'
    obj.meshResourcePath = 'package://asr_object_database/rsc/databases/textured_objects/Knaeckebrot/Knaeckebrot.dae'
    obj.poseEstimation.pose.position.x = 0.15
    obj.poseEstimation.pose.position.y = 0.15
    obj.poseEstimation.pose.position.z = 0
    obj.poseEstimation.pose.orientation.w = 1
    obj.poseEstimation.pose.orientation.x = 0
    obj.poseEstimation.pose.orientation.y = 0
    obj.poseEstimation.pose.orientation.z = 0

    objects.append(obj)

    try:
        rospy.wait_for_service('/rp_ism_node/find_scenes', timeout=5)
    except rospy.exceptions.ROSException, e:
        rospy.loginfo('Could not reach service')
Esempio n. 9
0
def main():
    req = FindScenesRequest()
    objects = []
    obj = AsrObject()
    obj.type = 'CoffeeBox'
    obj.header.frame_id = '/camera_left_frame'
    obj.identifier = ''
    obj.providedBy = 'textured'
    obj.colorName = 'textured'
    obj.meshResourcePath = 'package://asr_object_database/rsc/databases/textured_objects/CoffeeBox/CoffeeBox.dae'
    obj.poseEstimation.pose.position.x = -0.23448988704059
    obj.poseEstimation.pose.position.y = 0.502252516129886
    obj.poseEstimation.pose.position.z = 0.684928012927488
    obj.poseEstimation.pose.orientation.w = 0.695641823146944
    obj.poseEstimation.pose.orientation.x = -0.702895791692416
    obj.poseEstimation.pose.orientation.y = -0.102411625776331
    obj.poseEstimation.pose.orientation.z = 0.107386306462868

    objects.append(obj)

    try:
        rospy.wait_for_service('/rp_ism_node/find_scenes', timeout=5)
    except rospy.exceptions.ROSException, e:
        rospy.loginfo('Could not reach service')
def main():
    req = PushFoundObjectRequest()
    obj = AsrObject()
    obj.header.frame_id = '/camera_left_frame'
    obj.type = 'Smacks'
    obj.providedBy = 'textured'
    obj.colorName = 'textured'
    obj.meshResourcePath = 'package://asr_object_database/rsc/databases/textured_objects/Smacks/Smacks.dae'
    pose = PoseWithCovariance()
    pose.pose.position.x = -1.20467103562224
    pose.pose.position.y = 0.589709102059754
    pose.pose.position.z = 1.02933642432456
    pose.pose.orientation.w = 0.573287415807964
    pose.pose.orientation.x = -0.58793291283527
    pose.pose.orientation.y = -0.394117786539212
    pose.pose.orientation.z = 0.412731873272096
    obj.sampledPoses.append(pose)

    try:
        rospy.wait_for_service('/env/asr_world_model/push_found_object', timeout=5)
    except rospy.exceptions.ROSException, e:
        rospy.loginfo('Could not reach service')
Esempio n. 11
0
def main():
    objects = []

    obj = AsrObject()
    obj.type = 'VitalisSchoko'
    obj.identifier = '/map'
    obj.header.frame_id = '/map'
    poseWithCovariance = PoseWithCovariance()
    poseWithCovariance.pose.position.x = -0.3
    poseWithCovariance.pose.position.y = -1
    poseWithCovariance.pose.position.z = -0.6
    poseWithCovariance.pose.orientation.w = 0.5
    poseWithCovariance.pose.orientation.x = 0
    poseWithCovariance.pose.orientation.y = 0
    poseWithCovariance.pose.orientation.z = -0.5
    obj.sampledPoses.append(poseWithCovariance)
    objects.append(obj)

    obj2 = AsrObject()
    obj2.type = 'PlateDeep'
    obj2.identifier = '/map'
    obj2.header.frame_id = '/map'
    poseWithCovariance.pose.position.x = -0.51
    poseWithCovariance.pose.position.y = -1.2
    poseWithCovariance.pose.position.z = -0.65
    poseWithCovariance.pose.orientation.w = 0.5
    poseWithCovariance.pose.orientation.x = 0.0
    poseWithCovariance.pose.orientation.y = 0.0
    poseWithCovariance.pose.orientation.z = -0.5
    obj2.sampledPoses.append(poseWithCovariance)
    #objects.append(obj2)

    obj2 = AsrObject()
    obj2.type = 'Cup'
    obj2.identifier = '/map'
    obj2.header.frame_id = '/map'
    poseWithCovariance.pose.position.x = 0
    poseWithCovariance.pose.position.y = -1.13
    poseWithCovariance.pose.position.z = -0.65
    poseWithCovariance.pose.orientation.w = 0.5
    poseWithCovariance.pose.orientation.x = 0.0
    poseWithCovariance.pose.orientation.y = 0.0
    poseWithCovariance.pose.orientation.z = -0.5
    obj2.sampledPoses.append(poseWithCovariance)
    #objects.append(obj2)

    path = rospkg.RosPack().get_path(
        'asr_recognizer_prediction_psm') + '/models/dome_scene1.xml'

    scenes = []
    scenes.append('background')
    scenes.append('marker_scene1')
    scenes.append('marker_scene2')

    scene_probabilities = []
    scene_probabilities.append(0.25)
    scene_probabilities.append(0.5)
    scene_probabilities.append(0.25)

    num_overall_hypothesis = 10

    base_frame = '/map'

    try:
        rospy.wait_for_service('/recognizer_prediction_psm', timeout=5)

    except rospy.exceptions.ROSException, e:
        rospy.loginfo('Could not reach service')
    obj.meshResourcePath = 'package://asr_object_database/rsc/databases/textured_objects/Smacks/Smacks.dae'
    pose_cov = PoseWithCovariance()
    pose_cov.pose.position.x = random.gauss(0, 0.5)
    pose_cov.pose.position.y = random.gauss(0, 0.5)
    pose_cov.pose.position.z = 1.12
    q = tf.transformations.quaternion_from_euler(90, 0, 0, 'rzyx')
    pose_cov.pose.orientation = Quaternion(*q)
    obj.sampledPoses.append(pose_cov)
    return obj


if __name__ == '__main__':
    global detected_objects
    # Initialize the node and name it.
    rospy.init_node('test_world_model')
    object_list = []
    for i in range(500):
        found_object = AsrObject()
        found_object = get_coffee_box()
        object_list.append(found_object)
    push_object_in_wm(object_list)
    found_object_list()
    for i in range(500):
        found_object = AsrObject()
        found_object = get_coffee_box()
        object_list.append(found_object)
    push_object_in_wm(object_list)
    found_object_list()
    clear_world_model()
    found_object_list()