Esempio n. 1
0
def sphere_control():
    global sphere_pos_x, sphere_pos_y, sphere_pos_z
    obj_msg = Obj()

    obj_msg.id = 100
    obj_msg.type = 152
    obj_msg.position.x = sphere_pos_x
    obj_msg.position.y = sphere_pos_y
    obj_msg.position.z = sphere_pos_z
    obj_msg.size.x = 0.05
    obj_msg.size.y = 0.05
    obj_msg.size.z = 0.05

    sphere_pub.publish(obj_msg)
Esempio n. 2
0
def draw_unit(id, start, end):
    global obj_pub
    obj_msg = Obj()
    obj_msg.id = id
    obj_msg.type = 27
    obj_msg.position.x = (start.x + end.x) / 2
    obj_msg.position.y = (start.y + end.y) / 2
    obj_msg.position.z = start.z
    obj_msg.angule.z = np.arctan2(end.y - start.y, end.x - start.x)
    obj_msg.size.x = np.linalg.norm([end.y - start.y, end.x - start.x])
    obj_msg.size.y = 0.1
    obj_msg.size.z = 2
    obj_pub.publish(obj_msg)
    print(obj_msg)
Esempio n. 3
0
def send_control():
    rospy.init_node('obj_send', anonymous=True)
    obj_pub = rospy.Publisher("ue4_ros/obj", Obj, queue_size=10)
    
    interval_rate = 50
    interval_time = 1.0 / interval_rate
    rate = rospy.Rate(interval_rate)
    
    obj_msg = Obj()
    obj_msg.id = 100
    obj_msg.type = 152
    obj_msg.position.x = 0
    obj_msg.position.y = 3
    obj_msg.position.z = 2
    obj_msg.angule.x = 0
    obj_msg.angule.y = 0
    obj_msg.angule.z = 0
    obj_msg.size.x = 1
    obj_msg.size.y = 1
    obj_msg.size.z = 1
    while not rospy.is_shutdown():
        obj_msg.position.y = obj_msg.position.y + 0.001
        obj_pub.publish(obj_msg)
        rate.sleep()
Esempio n. 4
0
    def start(self):
        rospy.init_node("offboard_node")
        rate = rospy.Rate(20)

        obj_pub = rospy.Publisher(
            "ue4_ros/obj", Obj, queue_size=10)
        # type_pub = rospy.Publisher(
        #     "ue4_ros/obj/vehicle_type", UInt64, queue_size=10)
        # id_pub = rospy.Publisher(
        #     "ue4_ros/obj/vehicle_id", UInt64, queue_size=10)

        obj_msg = Obj()
        # type_msg = UInt64()
        # id_msg = UInt64()

        while(not self.mavros_state.connected):
            print(self.mavros_state.connected)
            rate.sleep()

        for i in range(10):
            self.vel_pub.publish(self.command)
            self.drone_state.data == self.task_takeoff
            self.drone_state_pub.publish(self.drone_state)
            rate.sleep()

        self.offboard_state = SetMode()
        self.offboard_state.custom_mode = "OFFBOARD"
        self.arm_state = CommandBool()
        self.arm_state.value = True

        start_time = rospy.Time.now()
        '''
        main ROS thread
        '''
        self.drone_state.data == self.task_takeoff
        cnt = -1
        obj_msg.position.x = 0
        obj_msg.position.y = 3
        obj_msg.position.z = 2
        obj_msg.angule.x = 0
        obj_msg.angule.y = 0
        obj_msg.angule.z = 0
        obj_msg.size.x = 5
        obj_msg.size.y = 5
        obj_msg.size.z = 1
        obj_msg.type = 24
        obj_msg.id = 100
        while (rospy.is_shutdown() is False):
            cnt += 1
            # self.record_stast()
            # self.drone_state_pub.publish(self.drone_state)
            print("self.mav_yaw: {}".format(self.mav_yaw))
            self.state_pub()
            if self.is_offboard == False:
                if self.mavros_state.mode == "OFFBOARD":
                    resp1 = self.flightModeService(0, "POSCTL")
                if cnt % 10 == 0:
                    print("Enter MANUAL mode")
                rate.sleep()
                # start_yaw = self.mav_yaw
                continue
            else:
                if self.mavros_state.mode != "OFFBOARD":
                    resp1 = self.flightModeService(
                        0, self.offboard_state.custom_mode)
                    if resp1.mode_sent:
                        print("Offboard enabled")
                    start_time = rospy.Time.now()
            # cmd_control = self.state_control(self.drone_state.data)
            # self.cmd_vel = np.array(
            #     [cmd_control[0], cmd_control[1], cmd_control[2]])
            # self.cmd_yaw = cmd_control[3]
            self.cmd_vel = np.array([0, 0, 0])
            des_pos = np.array([10, 0, 3])
            self.cmd_yaw = 0.1
            if self.is_start == True:
                self.cmd_vel = self.pos_control(
                    des_pos, self.mav_pos, self.P_pos, 1)
                # self.cmd_vel = np.array([0, 0, 0])
                # self.cmd_vel[0] = 1
                self.cmd_yaw = 0.1
                obj_msg.position.x = obj_msg.position.x + 0.05
                # obj_msg.angule.x = obj_msg.angule.x + 0.05

            # if (self.drone_state.data == self.task_takeoff or self.drone_state.data == self.task_in_search or
            #     self.drone_state.data == self.task_recognize_target or self.drone_state.data == self.task_attack or
            #     self.drone_state.data == self.task_finish or self.drone_state.data == 0):
            #     self.command.twist.linear.x = self.cmd_vel[0]
            #     self.command.twist.linear.y = self.cmd_vel[1]
            #     self.command.twist.linear.z = self.cmd_vel[2]
            #     self.command.twist.angular.z = self.cmd_yaw
            #     self.vel_pub.publish(self.command)
            # print("mav_pos: {}".format(self.mav_pos))
            self.command.twist.linear.x = self.cmd_vel[0]
            self.command.twist.linear.y = self.cmd_vel[1]
            self.command.twist.linear.z = self.cmd_vel[2]
            self.vel_pub.publish(self.command)
            obj_pub.publish(obj_msg)
            # type_pub.publish(type_msg)
            # id_pub.publish(id_msg)
            rate.sleep()