예제 #1
0
    def execute_cb(self, goal):
        xyVel = Float32()
        xyVel.data = 1
        self.set_xy_vel.publish(xyVel)
        goto_position_goal = goto_position_velGoal()
        goto_position_goal.destination.pose.orientation.w = 0.707
        goto_position_goal.destination.pose.orientation.z = 0.707
        self.goto_position_client.wait_for_server()
        #self.detect_object_client.wait_for_server()
        self.destination = goal.destination
        self.calculate_waypoints2()
        idx = 0
        while (self.detectedPos.pose.position.x == float("inf")):
            goto_position_goal.destination.pose.position.x = self.waypoints.item(
                (idx, 0))
            goto_position_goal.destination.pose.position.y = self.waypoints.item(
                (idx, 1))
            goto_position_goal.destination.pose.position.z = self.waypoints.item(
                (idx, 2))
            self.position_publisher.publish(self.cur_pose)
            self.goto_position_client.send_goal(goto_position_goal)
            self.goto_position_client.wait_for_result()
            idx = idx + 1
            if idx == self.waypoints.shape[
                    0] or self.detectedPos.pose.position.x != float("inf"):
                idx = 0
                self.result.detected_object_pos = self.detectedPos
                self.result.detected_object_pos.pose.position.z = self.searchHeight
                self.action_server.set_succeeded(self.result)

            #detect_object_goal = detect_objectGoal()
            #self.detect_object_client.send_goal(detect_object_goal)
            #self.detect_object_client.wait_for_result()
            #self.detectedPos = self.detect_object_client.get_result().detected_position
            time.sleep(0.1)
#roslib.load_manifest('autonomous_offboard')
import rospy
import actionlib
import mavros_state
import time

from autonomous_offboard.msg import center_on_objectAction,  center_on_objectGoal, descend_on_objectAction, descend_on_objectGoal, detect_objectAction, detect_objectGoal,goto_position_velAction, goto_position_velGoal, goto_positionAction, goto_positionGoal, short_grippersAction, short_grippersGoal, long_grippersAction, long_grippersGoal, coverageAction, coverageGoal

from std_msgs.msg import Float32
from geometry_msgs.msg import PoseStamped

if __name__ == '__main__':
    rospy.init_node('action_controller_takeoff_test')
    goto_position_vel_client = actionlib.SimpleActionClient('goto_position_vel', goto_position_velAction)
    goto_position_vel_client.wait_for_server()
    goto_position_vel_goal = goto_position_velGoal()
    mv_state = mavros_state.mavros_state()
    print 'Setting offboard'
    mv_state.set_mode('OFFBOARD')
    print 'Arming vehicle'
    print 'Takeoff'
    mv_state.arm(True)
    print 'Sleeping 20 sec'
    time.sleep(20)

    rospy.loginfo("change true height position")
    goto_position_vel_goal.destination.pose.position.x = 0
    goto_position_vel_goal.destination.pose.position.y = 5
    goto_position_vel_goal.destination.pose.position.z = 5
    goto_position_vel_client.send_goal(goto_position_vel_goal)
    goto_position_vel_client.wait_for_result()