Exemplo n.º 1
0
    public MoveStatus Move()
    {
        MoveStatus flag = MoveStatus.OTHER;

        curPos = (status == DroneStatus.PARKED) ? curPos : curPos + direction * SPEED;

        // if drone is moving(drone not parked)
        // and drone reached the current destination
        if (status != DroneStatus.PARKED && Utility.IsLessThan(curPos - dstPos, epsilon))
        {
            if (Utility.IsLessThan(dstPos - hoverPos, epsilon)) // drone has finished takeoff
            {
                if (status == DroneStatus.TAKEOFF)              // end of takeoff
                {
                    status = DroneStatus.TO_SHELF;
                    dstPos = eventPos;
                }
            }

            else if (Utility.IsLessThan(dstPos - eventPos, epsilon)) // Drone reached the event
            //else
            {
                status = DroneStatus.PARKED;
                curPos = parkingPos;
                flag   = MoveStatus.END_TO_SHELF;
            }
        }
        gameObjectPointer.transform.position = curPos;

        return(flag);
    }
Exemplo n.º 2
0
    void Start()
    {
        droneCount++;

        status = DroneStatus.going;
        target = GameObject.FindGameObjectWithTag("Player");
    }
Exemplo n.º 3
0
    public Drone(int droneId, Vector3 initPos)
    {
        this.droneId      = droneId;
        this.isPaused     = false;
        this.safetyStatus = SafetyStatus.NOT_SAFE;
        this.parkingPos   = this.curPos = initPos;
        this.hoverPos     = this.parkingPos + hoverShift;
        this.status       = DroneStatus.PARKED;
        this.isWarning    = false;
        this.isCollided   = false;

        // create game object
        // Debug.Log("Created new drone with id: " + droneId);
        GameObject baseObject = TrafficControl.worldobject.GetComponent <TrafficControl>().droneBaseObject;

        gameObjectPointer = Object.Instantiate(baseObject, initPos, Quaternion.identity);
        gameObjectPointer.GetComponent <DroneProperties>().classPointer = this;

        gameObjectPointer.name  = string.Concat("Drone", droneId.ToString());
        gameObjectPointer.layer = 2;
        // gameObjectPointer.gameObject.tag = string.Concat("Drone", droneId.ToString());
        gameObjectPointer.transform.parent = TrafficControl.worldobject.transform;

        GameObject arrow1 = gameObjectPointer.GetComponent <DroneProperties>().Arrows;

        arrows1 = Object.Instantiate(arrow1, initPos, Quaternion.Euler(0f, -90f, 0f));
        arrows1.transform.parent = TrafficControl.worldobject.transform;
        GameObject arrow2 = gameObjectPointer.GetComponent <DroneProperties>().Arrows;

        arrows2 = Object.Instantiate(arrow2, initPos, Quaternion.Euler(0f, -270f, 0f));
        arrows2.transform.parent = TrafficControl.worldobject.transform;
        arrows1.SetActive(false);
        arrows2.SetActive(false);
        ring_2 = gameObjectPointer.transform.Find("warningSphere").gameObject;
    }
        public MainWindow()
        {
            InitializeComponent();
            leftJoystick              = new Joystick(img_left_joystick, left_joystick_panel);
            rightJoystick             = new Joystick(img_right_joystick, right_joystick_panel);
            joystickAdjuster          = new DispatcherTimer();
            joystickAdjuster.Interval = new TimeSpan(15000);
            joystickAdjuster.Tick    += joystickAdjuster_Tick;
            joystickAdjuster.Start();
            red        = new SolidColorBrush((Color)App.Current.TryFindResource("color_red"));
            green      = new SolidColorBrush((Color)App.Current.TryFindResource("color_green"));
            defaultIps = new List <string>()
            {
                "127.0.0.1", "192.168.1.166", "192.168.10.1"
            };
            list_ips.ItemsSource = defaultIps;
            txt_drone_ip.Text    = defaultIps[0];
            status = new DroneStatus();
            videoReceiverStarted = false;

            joystickDataSender          = new DispatcherTimer();
            joystickDataSender.Tick    += JoystickControl;
            joystickDataSender.Interval = new TimeSpan(0, 0, 0, 0, 500);
            SetJoystickMode();
        }
Exemplo n.º 5
0
 internal void UpdateFromStatus(DroneStatus droneStatus)
 {
     X = droneStatus.X;
     Y = droneStatus.Y;
     Z = droneStatus.Z;
     BatteryPercentage = droneStatus.BatteryPercentage;
 }
Exemplo n.º 6
0
 private void UpdateDroneAppearance(EntityUid uid, DroneStatus status)
 {
     if (TryComp <AppearanceComponent>(uid, out var appearance))
     {
         appearance.SetData(DroneVisuals.Status, status);
     }
 }
Exemplo n.º 7
0
 public void AddEvent(Event e)
 {
     status    = DroneStatus.TAKEOFF;
     dstPos    = hoverPos;
     eventPos  = e.pos;
     direction = Vector3.Normalize(dstPos - parkingPos);
     eventId   = e.shelfId;
 }
Exemplo n.º 8
0
 private Drone(double capacidade, double velocidade, double autonomia, double carga, DroneStatus status)
 {
     Capacidade = capacidade;
     Velocidade = velocidade;
     Autonomia  = autonomia;
     Carga      = carga;
     Status     = status;
 }
Exemplo n.º 9
0
    public void SetStatus(DroneStatus _status)
    {
        if (status == DroneStatus.Landing || status == DroneStatus.Rest)
        {
            return;
        }

        status = _status;
    }
Exemplo n.º 10
0
    public override void Awake()
    {
        base.Awake(); //I would suggest you to put code below this line or in a Start() method

        Debug.Assert(DFC != null);
        Debug.Assert(DP != null);

        status = DroneStatus.Trouble;
    }
Exemplo n.º 11
0
 public void AddEvent(Event e)
 {
     //Debug.Log("Drone " + droneId + " Event " + e.shelfId + " at " + e.pos);
     status    = DroneStatus.TAKEOFF;
     dstPos    = hoverPos;
     eventPos  = e.pos;
     direction = Vector3.Normalize(dstPos - parkingPos);
     eventId   = e.shelfId;
 }
Exemplo n.º 12
0
 bool CheckForTarget()
 {
     if (Vector3.Distance(this.transform.position, target.transform.position) <= alertDistance)
     {
         status = DroneStatus.hunting;
         return(true);
     }
     return(false);
 }
 public Drone(Guid id, double capacidade, double velocidade, double autonomia, double carga, DroneStatus status)
 {
     Id         = id;
     Capacidade = capacidade;
     Velocidade = velocidade;
     Autonomia  = autonomia;
     Carga      = carga;
     Status     = status;
 }
Exemplo n.º 14
0
 public Poll(int id, int batteryBalance, string failureCode, string location, DateTime pollTime, DroneStatus status, int drone_Id)
 {
     Id             = id;
     BatteryBalance = batteryBalance;
     FailureCode    = failureCode;
     Location       = location;
     PollTime       = pollTime;
     Status         = status;
     Drone_Id       = drone_Id;
 }
        public async Task <List <DroneEntity> > GetByStatus(DroneStatus status)
        {
            using var conn = await DbFactory.OpenAsync();

            await conn.CheckBase();

            var list = await conn.SelectAsync <Drone>(d => d.Status == status);

            return(list.ConvertTo <List <DroneEntity> >());
        }
Exemplo n.º 16
0
        public async Task <IActionResult> Post(CreateDroneRequest request)
        {
            if (OrganisationId == Guid.Empty)
            {
                return(Forbid());
            }
            var droneDto = _mapper.Map <DroneDto>(request);

            droneDto.Status         = DroneStatus.GetDefaultStatus();
            droneDto.OrganisationId = OrganisationId;
            await _droneService.CreateAsync(droneDto);

            return(Ok());
        }
Exemplo n.º 17
0
        private DroneStatus RetornaStatus(string descricaoStatus)
        {
            DroneStatus status = DroneStatus.Carregando;

            if (descricaoStatus == DroneStatus.Carregando.ToString())
            {
                status = DroneStatus.Carregando;
            }
            if (descricaoStatus == DroneStatus.EmTransito.ToString())
            {
                status = DroneStatus.EmTransito;
            }
            if (descricaoStatus == DroneStatus.Pronto.ToString())
            {
                status = DroneStatus.Pronto;
            }
            return(status);
        }
Exemplo n.º 18
0
    public Drone(int droneId, Vector3 initPos)
    {
        this.droneId    = droneId;
        this.parkingPos = this.curPos = initPos;
        this.hoverPos   = this.parkingPos + hoverShift;
        this.status     = DroneStatus.PARKED;
        this.isCollided = false;

        // create game object
        GameObject baseObject = TrafficControl.worldobject.GetComponent <TrafficControl>().droneBaseObject;

        gameObjectPointer = Object.Instantiate(baseObject, initPos, Quaternion.identity);
        gameObjectPointer.GetComponent <DroneProperties>().classPointer = this;

        gameObjectPointer.name             = string.Concat("Drone", droneId.ToString());
        gameObjectPointer.layer            = 2;
        gameObjectPointer.transform.parent = TrafficControl.worldobject.transform;
    }
Exemplo n.º 19
0
    // Update is called once per frame
    void FixedUpdate()
    {
        if (status == DroneStatus.going)
        {
            if (!CheckForTarget())
            {
                MoveTwd(point1, patrolSpeed);

                if (CheckDistance(point1, closeEnough))
                {
                    status = DroneStatus.returning;
                }
            }
        }
        else if (status == DroneStatus.returning)
        {
            if (!CheckForTarget())
            {
                MoveTwd(point2, patrolSpeed);

                if (CheckDistance(point2, closeEnough))
                {
                    status = DroneStatus.going;
                }
            }
        }

        //separate if in case player is picked up this frame
        if (status == DroneStatus.hunting)
        {
            if (!CheckDistance(target, minDistance))
            {
                MoveTwd(target, huntSpeed);
            }
            else
            {
                this.transform.LookAt(target.transform);
                if (transform.position.y > target.transform.position.y)
                {
                    transform.position += new Vector3(0, -1 * Time.deltaTime, 0);
                }
            }
        }
    }
Exemplo n.º 20
0
 public static Drone Criar(double capacidade, double velocidade, double autonomia, double carga, DroneStatus status)
 {
     return(new Drone(capacidade, velocidade, autonomia, carga, status));
 }
Exemplo n.º 21
0
 public void AtualizarStatus(DroneStatus status)
 {
     Status = status;
 }
Exemplo n.º 22
0
    void FixedUpdate()
    {
        GetVelocity();
        ClampingSpeedValues();
        SettingControllerToInputSettings(); //sensitivity settings for joystick,keyboard,mobile (depending on which is turned on)

        if (FlightRecorderOverride == false)
        {
            //  메뉴 UI 작동중에는 조작 불가능
            if (IngameCanvasManager.instance.isCanvasOn)
            {
                BasicDroneHoverAndRotation();
                return;
            }

            // '컨트롤' 상태일 때에만 조작.
            // 아닐 경우에는 호버링
            switch (status)
            {
            case DroneStatus.Control:

                #region tutorial movement
                if (PlayerPrefsData.instance.isTutorialFinish == 0)
                {
                    int tutorialProcess = QuestManager.instance.GetCurTutorialProcess();

                    // 조작 제한 튜토리얼
                    if (tutorialProcess == 0)
                    {
                    }
                    else if (tutorialProcess <= 2)
                    {
                        MovementForward();
                    }
                    else if (tutorialProcess <= 4)
                    {
                        MovementForward(true);
                        MovementLeftRight();
                    }
                    else if (tutorialProcess <= 7)
                    {
                        MovementUpDown();
                    }
                    else if (tutorialProcess <= 9)
                    {
                        MovementUpDown(true);
                        Rotation();
                    }

                    // 자유 이동 튜토리얼
                    else
                    {
                        MovementUpDown();
                        MovementLeftRight();
                        Rotation();
                        MovementForward();
                    }
                }
                #endregion

                else
                {
                    MovementUpDown();
                    MovementLeftRight();
                    Rotation();
                    MovementForward();
                }

                // 바람 영향.
                // 조종 중에만 영향을 받음.
                AddWindyForce();

                if (LandingCheck())
                {
                    BeginLanding();
                    status = DroneStatus.Landing;
                }

                break;

            case DroneStatus.Recall:
                ResetDroneVelocity();

                break;

            case DroneStatus.Talk:
                MovementUpDown(true);
                ResetDroneVelocity();

                break;

            case DroneStatus.Trouble:

                MovementUpDown(true);
                DirectDroneRecoverMoment(transform.eulerAngles.y);

                if (PlayerPrefsData.instance.isTutorialFinish == 1)
                {
                    RecoverTrouble();
                }

                break;

            case DroneStatus.Landing:

                if (PlayerController.instance.GetStatus() != PlayerStatus.Stay)
                {
                    return;
                }

                MovementLeftRight(true);
                MovementForward(true);
                MovementUpDown();

                if (TurnOffCheck())
                {
                    DP.TurnOffTrigger();
                    ourDrone.velocity        = Vector3.zero;
                    ourDrone.angularVelocity = Vector3.zero;
                    status = DroneStatus.Rest;
                }

                else if (DepartureCheck())
                {
                    EndLanding();
                    status = DroneStatus.Control;
                }

                break;

            case DroneStatus.Rest:

                if (PlayerController.instance.GetStatus() != PlayerStatus.Stay)
                {
                    return;
                }

                if (TurnOnCheck())
                {
                    DP.TurnOnTrigger();
                }
                break;
            }



            // Hovering
            BasicDroneHoverAndRotation(); //this method applies all the forces and rotations to the drone.
        }
    }
Exemplo n.º 23
0
		public ARDrone(string IP)
		{
			status = DroneStatus.Invalid;
			if (System.Net.IPAddress.TryParse(IP, out ip))
			{
				ping = new Pinger(this);
				this.Status = DroneStatus.NotConnected;
				
				navData = new NavData(this);
				configurator = new Configurator(this);
				
				commander = new Commander(this);
				positioner = new Positioner(this);
				targeter = new Target(this);
				
				flyCommand = new FlyCommand(this);
			}
		}
Exemplo n.º 24
0
		public DroneStatusChangedEventArgs(DroneStatus CurrentStatus, DroneStatus FormerStatus)
		{
			this.Status = CurrentStatus;
			this.FormerStatus = FormerStatus;
		}
Exemplo n.º 25
0
 public void UpdateStatus(DroneStatus status)
 {
     Status = status;
 }
Exemplo n.º 26
0
    /// <summary>
    /// Update the status of drone and Move
    /// </summary>
    /// <returns>
    /// drone paused: 0;
    /// end of to_shelf trip: 1;
    /// end of whole trip: 2;
    /// otherwise: -1
    /// </returns>
    public MoveStatus Move()
    {
        MoveStatus flag = MoveStatus.OTHER;

        if (isPaused)
        {
            // if (pauseCounter-- == 0)
            // {
            //     isPaused = false;
            // }
            return(flag);
        }
        // curPos = status == 0 ? gameObjectPointer.transform.position : gameObjectPointer.transform.position + direction * SPEED;
        // direction = Utility.shelves[eventId] - curPos;
        // direction = GameObject.Find("Event" + eventId.ToString()).transform.position - curPos;
        curPos = status == DroneStatus.PARKED ? curPos : curPos + direction * SPEED;
        // Debug.Log("Move drone " + droneId + " with dir: " + direction + " to pos: " + curPos);

        // New Code
        if (safetyStatus == SafetyStatus.TO_SAFE_ZONE)
        {
            if (curPos.y >= 30.0f)
            {
                safetyStatus          = SafetyStatus.SAFE;
                safetyFlightStartTime = Time.time;
            }
            else
            {
                //Directionally Upward:
                curPos = curPos + new Vector3(0, SPEED * safetySpeedMultiplier, 0);

                // Straight Upward:
                //Vector3 orgPos = curPos - direction * SPEED;
                //curPos = orgPos + new Vector3(0, SPEED*safetySpeedMultiplier, 0);
            }
        }
        else if (safetyStatus == SafetyStatus.SAFE)
        {
            //Debug.Log("Safe zone");
            if (Time.time - safetyFlightStartTime > safetyTime)
            {
                safetyStatus          = SafetyStatus.TO_NONSAFE_ZONE;
                safetyFlightStartTime = 0;
            }
            else
            {
                Vector3 orgPos = curPos - direction * SPEED;
                curPos = orgPos + new Vector3(direction.x * SPEED, 0, direction.z * SPEED);
            }
        }
        else if (safetyStatus == SafetyStatus.TO_NONSAFE_ZONE)
        {
            //Debug.Log("Non-safe zone");
            if (curPos.y < 30.0f)
            {
                safetyStatus = SafetyStatus.NOT_SAFE;
            }
        }


        // End of New code


        flag = MoveStatus.OTHER;


        if (status != DroneStatus.PARKED && Utility.IsLessThan(curPos - dstPos, epsilon))
        {
            // Debug.Log(status + " " + curPos + " " + dstPos + " " + hoverPos + " " + parkingPos + " " + eventPos);

            if (Utility.IsLessThan(dstPos - hoverPos, epsilon))
            {
                if (status == DroneStatus.TAKEOFF)  // end of takeoff
                {
                    Utility.DeleteChild(this.gameObjectPointer, "Line");
                    status = DroneStatus.TO_SHELF;
                    dstPos = eventPos;
                    // Debug.Log(droneId + "end of takeoff, now to event: " + eventPos + "cur: " + curPos);
                }
            }
            else if (Utility.IsLessThan(dstPos - eventPos, epsilon)) // Drone Reached the event
            {
                // cur_s = 2 --> 3
                // end of to_shelf trip
                status = DroneStatus.PARKED;
                curPos = parkingPos;
                flag   = MoveStatus.END_TO_SHELF;
            }
        }
        gameObjectPointer.transform.position = curPos;
        // gameObjectPointer.transform.rotation = Quaternion.identity;
        // gameObjectPointer.transform.rotation = TrafficControl.worldobject.transform.rotation;

        if (EnableArrows)
        {
            DisplayArrow();
        }


        return(flag);
    }