Exemple #1
0
 def __init__(self, sub):
     self.sub = sub
     self.print_info = FprintFactory(title=MISSION).fprint
     self.print_bad = FprintFactory(title=MISSION, msg_color="red").fprint
     self.print_good = FprintFactory(title=MISSION,
                                     msg_color="green").fprint
     self.buoys = {'red': Buoy(), 'green': Buoy(), 'yellow': Buoy()}
     self.pattern_done = False
     self.generate_pattern()
    def __init__(self, sub):
        self.sub = sub
        self.print_info = FprintFactory(title=MISSION).fprint
        self.print_bad = FprintFactory(title=MISSION, msg_color="red").fprint
        self.print_good = FprintFactory(title=MISSION,
                                        msg_color="green").fprint
        self.tf_listener = tf.TransformListener()

        # B = bottom; T = Top; L = left; R = right; C = center; O = unblocked;
        # X = blocked;
        self.targets = {'Wheel': Target()}
        self.pattern_done = False
        self.done = False
        self.ltime = None
        self.generate_pattern()
def run(sub):
    fprint = FprintFactory(title='ACUTATOR TEST').fprint

    @util.cancellableInlineCallbacks
    def test():
        yield sub.actuators.gripper_open()
        yield sub.actuators.gripper_close()
        yield sub.actuators.shoot_torpedo1()
        yield sub.actuators.shoot_torpedo2()
        yield sub.actuators.drop_marker()
        yield sub.actuators.set('gripper', False)
        yield sub.actuators.open('torpedo1')
        yield sub.actuators.set_raw('torpedo1', True)

    def err(err):
        fprint('Error with actuators: {}'.format(err), msg_color='red')
        global failed
        failed = True

    test_runner = test()
    test_runner.addErrback(err)
    yield test_runner
    global failed
    if not failed:
        fprint('Success with all actuators!', msg_color='blue')
    else:
        fprint('Failed 1 or more actuator calls', msg_color='red')
Exemple #4
0
 def __init__(self, sub):
     self.sub = sub
     self.print_info = FprintFactory(title=MISSION).fprint
     self.print_bad = FprintFactory(title=MISSION, msg_color="red").fprint
     self.print_good = FprintFactory(title=MISSION,
                                     msg_color="green").fprint
     self.pattern_done = False
     self.done = False
     self.generate_pattern()
     # self.get_path_marker = self.sub.nh.subscribe(
     # '/vision/path_roi', RegionOfInterest)
     self.get_direction = self.sub.nh.subscribe('/vision/path_direction',
                                                String)
     self.get_orange = self.sub.nh.subscribe('/vision/path_orange', String)
     self.t = None
     self.reset = True
     self.starting_pos = sub.tx_pose()
Exemple #5
0
 def __init__(self, sub):
     self.sub = sub
     self.print_info = FprintFactory(title=MISSION).fprint
     self.print_bad = FprintFactory(title=MISSION, msg_color="red").fprint
     self.print_good = FprintFactory(
         title=MISSION, msg_color="green").fprint
     # B = bottom; T = Top; L = left; R = right; C = center; O = unblocked;
     # X = blocked;
     self.targets = {
         'TCX': Target(),
         'TRX': Target(),
         'TLX': Target(),
         'BCO': Target()
     }
     self.pattern_done = False
     self.done = False
     self.generate_pattern()
Exemple #6
0
    def __init__(self):

        # Pull constants from config file
        self.min_trans = rospy.get_param('~min_trans', .25)
        self.max_velocity = rospy.get_param('~max_velocity', 1)
        self.min_observations = rospy.get_param('~min_observations', 30)
        self.camera = rospy.get_param('~camera_topic',
                                      '/camera/front/left/image_rect_color')
        # Instantiate remaining variables and objects
        self._observations = deque()
        self._pose_pairs = deque()
        self._times = deque()
        self._observations1 = deque()
        self._pose_pairs1 = deque()
        self._times1 = deque()
        self._observations2 = deque()
        self._pose_pairs2 = deque()
        self._times2 = deque()
        self.last_image_time = None
        self.last_image = None
        self.tf_listener = tf.TransformListener()
        self.status = ''
        self.est = None
        self.est1 = None
        self.est2 = None
        self.plane = None
        self.visual_id = 0
        self.enabled = False
        self.bridge = CvBridge() 
        self.print_info = FprintFactory(title=MISSION).fprint
        # Image Subscriber and Camera Information
        self.point_sub = rospy.Subscriber(
            '/roi_pub', RegionOfInterest, self.acquire_targets)
        self.image_sub = Image_Subscriber(self.camera, self.image_cb)

        self.camera_info = self.image_sub.wait_for_camera_info()
        self.camera_model = PinholeCameraModel()
        self.camera_model.fromCameraInfo(self.camera_info)
        self.frame_id = 'front_left_cam_optical'
        self.markerPub0 = rospy.Publisher('estMarker0', Marker, queue_size=1)
        self.markerPub1 = rospy.Publisher('estMarker1', Marker, queue_size=1)
        self.markerPub2 = rospy.Publisher('estMarker2', Marker, queue_size=1)
        # Ros Services so mission can be toggled and info requested
        rospy.Service('~enable', SetBool, self.toggle_search)
        self.multi_obs = MultiObservation(self.camera_model)
        rospy.Service('~pose', VisionRequest, self.request_board3d)

        # Debug
        self.debug = rospy.get_param('~debug', True)
Exemple #7
0
    def run(self, args):
        self.vision_proxies.xyz_points.start()

        global SPEED
        global pub_cam_ray
        fprint('Enabling cam_ray publisher')
        pub_cam_ray = yield self.nh.advertise('/vamp/cam_ray', Marker)

        yield self.nh.sleep(1)

        fprint('Connecting camera')

        cam_info_sub = yield self.nh.subscribe(
            '/camera/front/left/camera_info', CameraInfo)

        fprint('Obtaining cam info message')
        cam_info = yield cam_info_sub.get_next_message()
        model = PinholeCameraModel()
        model.fromCameraInfo(cam_info)

        #   enable_service = self.nh.get_service_client("/vamp/enable", SetBool)
        #   yield enable_service(SetBoolRequest(data=True))

        #        try:
        #            vamp_txros = yield self.nh.get_service_client('/guess_location',
        #                                                          GuessRequest)
        #            vamp_req = yield vamp_txros(GuessRequestRequest(item='vampire_slayer'))
        #            if vamp_req.found is False:
        #                use_prediction = False
        #                fprint(
        #                    'Forgot to add vampires to guess?',
        #                    msg_color='yellow')
        #            else:
        #                fprint('Found vampires.', msg_color='green')
        #                yield self.move.set_position(mil_ros_tools.rosmsg_to_numpy(vamp_req.location.pose.position)).depth(0.5).go(speed=0.4)
        #        except Exception as e:
        #            fprint(e)

        markers = MarkerArray()
        pub_markers = yield self.nh.advertise('/torpedo/rays', MarkerArray)
        pub_markers.publish(markers)
        '''
        Move Pattern
        '''
        yield self.move.left(1).go()
        yield self.nh.sleep(2)
        yield self.move.right(2).go()
        yield self.nh.sleep(2)
        yield self.move.down(.5).go()
        yield self.nh.sleep(2)
        yield self.move.up(.5).go()
        yield self.move.forward(.75).go()
        yield self.nh.sleep(2)
        yield self.move.right(.75).go()
        yield self.nh.sleep(2)
        yield self.move.backward(.75).go()
        yield self.move.left(1).go()
        '''
        Did we find something?
        '''
        res = yield self.vision_proxies.xyz_points.get_pose(target='buoy')
        MISSION = 'Vampires'
        print_info = FprintFactory(title=MISSION).fprint

        if res.found:
            print_info("CHARGING BUOY")
            target_pose = rosmsg_to_numpy(res.pose.pose.position)
            target_normal = rosmsg_to_numpy(res.pose.pose.orientation)[:2]
            print('Normal: ', target_normal)
            yield self.move.go(blind=True, speed=0.1)  # Station hold
            transform = yield self._tf_listener.get_transform(
                '/map', '/base_link')
            target_position = target_pose
            #            target_position = target_pose / target_normal

            sub_pos = yield self.tx_pose()
            print('Current Sub Position: ', sub_pos)

            print('Map Position: ', target_position)
            #sub_pos = transform._q_mat.dot(sub_pos[0] - transform._p)
            #target_position = target_position - sub_pos[0]
            # yield self.move.look_at_without_pitching(target_position).go(blind=True, speed=.25)
            #yield self.move.relative(np.array([0, target_position[1], 0])).go(blind=True, speed=.1)
            # Don't hit buoy yet
            print("MOVING TO X: ", target_position[0])
            print("MOVING TO Y: ", target_position[1])
            yield self.move.set_position(
                np.array([
                    target_position[0], target_position[1], target_position[2]
                ])).go(blind=True, speed=.1)
            # Go behind it
            #print('Going behind target')
            #yield self.move.right(4).go(speed=1)
            #yield self.move.forward(4).go(speed=1)
            #yield self.move.left(4).go(speed=1)
            # Hit buoy
            #print('Hitting Target')
            #yield self.move.strafe_backward(Y_OFFSET).go(speed=1)
            print_info("Slaying the Vampire, good job Inquisitor.")
            sub_pos = yield self.tx_pose()
            print('Current Sub Position: ', sub_pos)
            marker = Marker(ns='buoy',
                            action=visualization_msgs.Marker.ADD,
                            type=Marker.ARROW,
                            scale=Vector3(0.2, 0.5, 0),
                            points=np.array(
                                [Point(0, 0, 0), res.pose.pose.position]))
            marker.id = 3
            marker.header.frame_id = '/base_link'
            marker.color.r = 1
            marker.color.g = 0
            marker.color.a = 1
            markers.markers.append(marker)
            pub_markers.publish(markers)

            yield self.nh.sleep(0.5)  # Throttle service calls
            # print_info(info)
            self.vision_proxies.xyz_points.stop()