// Editor QoL
 private void Reset()
 {
     // Auto detect quadcopter
     if (drone == null)
     {
         drone = GetComponent <Quadcopter>();
     }
 }
예제 #2
0
        public void Run()
        {
            var speedController = new SpeedController(Pca9685PwmController.Default);
            var aircraft        = new Quadcopter(speedController);

            WindowsPilot.Create(
                aircraft,
                L3gd20hGyroscope.Default,
                Lsm303dAccelerometer.Default,
                Lsm303dMagnetometer.Default,
                FlightController.FromGamepad(LogitechF710Gamepad.Default),
                thrustMax: 0.8d,
                angularPositionPitchMax: AngleConvert.ToRadians(15d),
                angularPositionRollMax: AngleConvert.ToRadians(15d),
                angularVelocityYawMax: AngleConvert.ToRadians(90 /*dps*/));
        }
    private void Start()
    {
        // Get all quadcopters in the scene
        Quadcopter[] drones = FindObjectsOfType <Quadcopter>();

        // Throw an exception if there is more than one quadcopter
        if (drones.Length > 1)
        {
            throw new System.Exception("Multiple quadcopters detected.");
        }

        // Initialization
        drone       = drones[0];
        motorThrust = (drone.MotorNE.maxThrust + drone.MotorNW.maxThrust + drone.MotorSE.maxThrust + drone.MotorSW.maxThrust) / 4.0f;
        rBody       = drone.GetComponent <Rigidbody>();


        // Make sure the quadcopter has a rigidbody
        if (rBody == null)
        {
            throw new System.Exception("Rigidbody on quadcopter is missing.");
        }


        // Make sure the rigidbody parameters have not been modified
        if (rBody.isKinematic == true || rBody.useGravity == false || rBody.constraints != RigidbodyConstraints.None)
        {
            throw new System.Exception("Quadcopter rigidbody paramters do not match.");
        }


        // Initiazation
        lastPos    = drone.transform.position;
        lastVel    = rBody.velocity;
        lastMotors = new float[] { drone.MotorNE.Power, drone.MotorNW.Power, drone.MotorSE.Power, drone.MotorSW.Power };
    }