{
  "_class" : "hudson.model.FreeStyleBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "com.cloudbees.jenkins.GitHubPushCause",
          "shortDescription" : "Started by GitHub push by lamont-granquist"
        }
      ]
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "refs/remotes/origin/dev" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1453,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "f06780e0d1b987ea87fa48640139c274065afff9",
            "branch" : [
              {
                "SHA1" : "f06780e0d1b987ea87fa48640139c274065afff9",
                "name" : "refs/remotes/origin/dev"
              }
            ]
          },
          "revision" : {
            "SHA1" : "f06780e0d1b987ea87fa48640139c274065afff9",
            "branch" : [
              {
                "SHA1" : "f06780e0d1b987ea87fa48640139c274065afff9",
                "name" : "refs/remotes/origin/dev"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "f06780e0d1b987ea87fa48640139c274065afff9",
        "branch" : [
          {
            "SHA1" : "f06780e0d1b987ea87fa48640139c274065afff9",
            "name" : "refs/remotes/origin/dev"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/MuMech/MechJeb2.git"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    {
      "displayPath" : "MechJeb2-2.14.3.0-1453.zip",
      "fileName" : "MechJeb2-2.14.3.0-1453.zip",
      "relativePath" : "MechJeb2-2.14.3.0-1453.zip"
    }
  ],
  "building" : False,
  "description" : None,
  "displayName" : "#1453",
  "duration" : 20928,
  "estimatedDuration" : 20942,
  "executor" : None,
  "fullDisplayName" : "MechJeb2-Dev #1453",
  "id" : "1453",
  "inProgress" : False,
  "keepLog" : False,
  "number" : 1453,
  "queueId" : 2126,
  "result" : "SUCCESS",
  "timestamp" : 1749072113733,
  "url" : "https://ksp.sarbian.com/jenkins/user/lamont/my-views/view/All/job/MechJeb2-Dev/1453/",
  "builtOn" : "",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "MechJeb2/AttitudeControllers/LQRController.cs",
          "MechJeb2/AttitudeControllers/DirectionTracker.cs",
          "MechJeb2/MechJebModuleAttitudeController.cs",
          "MechJebLib/Primitives/M3.cs",
          "MechJebLib/Control/MultiVariableGrid.cs",
          "MechJebLib/MechJebLib.csproj",
          "MechJebLib/Control/LQRLoop1.cs",
          "MechJeb2.sln.DotSettings",
          "MechJebLib/Control/MultiVariableInterpolator.cs",
          "MechJeb2/MechJeb2.csproj",
          "MechJeb2/AttitudeControllers/BetterController.cs",
          "MechJeb2/MechJebModuleAttitudeAdjustment.cs"
        ],
        "commitId" : "f527fad64d7825df829e6402cb9049bbcce558e1",
        "timestamp" : 1749071501000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/lamont",
          "fullName" : "lamont"
        },
        "authorEmail" : "lamont@scriptkiddie.org",
        "comment" : "Add DirectionTracker and wire it up to BetterController\u000a\u000aThe DirectionTracker is my attempt to solve the problem of splitting\u000aup desired vs current pitch/yaw/roll so that I can implement LQRs and\u000a2DOF PID controllers.  It attempts to track small tick-to-tick\u000adeltas and use them to accumulate a value which will not suffer from\u000agimbal lock issues or 2pi wraparound issues.  When the controller axis\u000ais reset then in addition to clobbering the PID integral states, it also\u000azeros the DirectionTracker.  Since the error calc is still mathematically\u000aidentical at the end of the day it really shouldn't change the\u000aBetterController much (i hope).\u000a\u000aThis also adds an LQR based controller which is just a proof of concept\u000athat I can actually wire up an LQR controller.  It also uses the\u000aDirectionTracker.  It does not usably fly a rocket in its current form.\u000a\u000aSigned-off-by: Lamont Granquist <lamont@scriptkiddie.org>\u000a",
        "date" : "2025-06-04 14:11:41 -0700",
        "id" : "f527fad64d7825df829e6402cb9049bbcce558e1",
        "msg" : "Add DirectionTracker and wire it up to BetterController",
        "paths" : [
          {
            "editType" : "add",
            "file" : "MechJeb2/AttitudeControllers/DirectionTracker.cs"
          },
          {
            "editType" : "add",
            "file" : "MechJebLib/Control/LQRLoop1.cs"
          },
          {
            "editType" : "add",
            "file" : "MechJeb2/AttitudeControllers/LQRController.cs"
          },
          {
            "editType" : "edit",
            "file" : "MechJeb2/MechJeb2.csproj"
          },
          {
            "editType" : "add",
            "file" : "MechJebLib/Control/MultiVariableInterpolator.cs"
          },
          {
            "editType" : "edit",
            "file" : "MechJeb2/AttitudeControllers/BetterController.cs"
          },
          {
            "editType" : "add",
            "file" : "MechJebLib/Control/MultiVariableGrid.cs"
          },
          {
            "editType" : "edit",
            "file" : "MechJebLib/Primitives/M3.cs"
          },
          {
            "editType" : "edit",
            "file" : "MechJeb2.sln.DotSettings"
          },
          {
            "editType" : "edit",
            "file" : "MechJeb2/MechJebModuleAttitudeController.cs"
          },
          {
            "editType" : "edit",
            "file" : "MechJeb2/MechJebModuleAttitudeAdjustment.cs"
          },
          {
            "editType" : "edit",
            "file" : "MechJebLib/MechJebLib.csproj"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/lamont",
      "fullName" : "lamont"
    }
  ]
}