// Editor QoL private void Reset() { // Auto detect quadcopter if (drone == null) { drone = GetComponent <Quadcopter>(); } }
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 }; }