Beispiel #1
0
 private void DistanceHeading(DriveCommand dc, FlightCtrlState fs)
 {
     if (Vector3.Distance(RoverOrigPos, mVessel.CoM) < Math.Abs(dc.target))
     {
         fs.wheelThrottle = mThrottlePID.Control(dc.speed - RoverSpeed);
         fs.wheelSteer    = mWheelPID.Control(RTUtil.ClampDegrees180(RoverHDG - dc.target2));
     }
     else
     {
         fs.wheelThrottle = 0;
         fs.wheelSteer    = 0;
         mVessel.ActionGroups.SetGroup(KSPActionGroup.Brakes, true);
         dc.mode = DriveCommand.DriveMode.Off;
         dc      = null;
     }
 }
Beispiel #2
0
        private void Coord(DriveCommand dc, FlightCtrlState fs)
        {
            float
                dist = Vector3.Distance(mVessel.CoM, TargetPos),
                deg  = RTUtil.ClampDegrees180(RoverHDG - TargetHDG);

            if (dist > Math.Abs(deg) / 36)
            {
                fs.wheelThrottle = mThrottlePID.Control(dc.speed - RoverSpeed);
                fs.wheelSteer    = mWheelPID.Control(deg);
            }
            else
            {
                fs.wheelThrottle = 0;
                fs.wheelSteer    = 0;
                mVessel.ActionGroups.SetGroup(KSPActionGroup.Brakes, true);
                dc.mode = DriveCommand.DriveMode.Off;
                dc      = null;
            }
        }