
 

// This file is autogenerated. DO NOT EDIT

#pragma once
#include <robotpy_build.h>


#include <../../_impl/include/frc/controller/LinearQuadraticRegulator.h>





namespace rpygen {

using namespace frc;


template <int States, int Inputs>
struct bind_frc__LinearQuadraticRegulator {

    

    py::class_<typename frc::LinearQuadraticRegulator<States, Inputs>> cls_LinearQuadraticRegulator;




    py::module &m;
    std::string clsName;

bind_frc__LinearQuadraticRegulator(py::module &m, const char * clsName) :
    cls_LinearQuadraticRegulator(m, clsName),



    m(m),
    clsName(clsName)
{
    
}

void finish(const char * set_doc = NULL, const char * add_doc = NULL) {

    

  cls_LinearQuadraticRegulator
      .def(py::init<const Eigen::Matrix<double, States, States>&, const Eigen::Matrix<double, States, Inputs>&, const wpi::array<double, States>&, const wpi::array<double, Inputs>&, units::second_t>(),
      py::arg("A"), py::arg("B"), py::arg("Qelems"), py::arg("Relems"), py::arg("dt"), release_gil()    , py::keep_alive<1, 2>()    , py::keep_alive<1, 3>()    , py::keep_alive<1, 4>()    , py::keep_alive<1, 5>(), py::doc(
    "Constructs a controller with the given coefficients and plant.\n"
"\n"
":param A:      Continuous system matrix of the plant being controlled.\n"
":param B:      Continuous input matrix of the plant being controlled.\n"
":param Qelems: The maximum desired error tolerance for each state.\n"
":param Relems: The maximum desired control effort for each input.\n"
":param dt:     Discretization timestep.")
  )
    
      .def(py::init<const Eigen::Matrix<double, States, States>&, const Eigen::Matrix<double, States, Inputs>&, const Eigen::Matrix<double, States, States>&, const Eigen::Matrix<double, Inputs, Inputs>&, units::second_t>(),
      py::arg("A"), py::arg("B"), py::arg("Q"), py::arg("R"), py::arg("dt"), release_gil()    , py::keep_alive<1, 2>()    , py::keep_alive<1, 3>()    , py::keep_alive<1, 4>()    , py::keep_alive<1, 5>(), py::doc(
    "Constructs a controller with the given coefficients and plant.\n"
"\n"
":param A:  Continuous system matrix of the plant being controlled.\n"
":param B:  Continuous input matrix of the plant being controlled.\n"
":param Q:  The state cost matrix.\n"
":param R:  The input cost matrix.\n"
":param dt: Discretization timestep.")
  )
    
      .def(py::init<const Eigen::Matrix<double, States, States>&, const Eigen::Matrix<double, States, Inputs>&, const Eigen::Matrix<double, States, States>&, const Eigen::Matrix<double, Inputs, Inputs>&, const Eigen::Matrix<double, States, Inputs>&, units::second_t>(),
      py::arg("A"), py::arg("B"), py::arg("Q"), py::arg("R"), py::arg("N"), py::arg("dt"), release_gil()    , py::keep_alive<1, 2>()    , py::keep_alive<1, 3>()    , py::keep_alive<1, 4>()    , py::keep_alive<1, 5>()    , py::keep_alive<1, 6>(), py::doc(
    "Constructs a controller with the given coefficients and plant.\n"
"\n"
":param A:  Continuous system matrix of the plant being controlled.\n"
":param B:  Continuous input matrix of the plant being controlled.\n"
":param Q:  The state cost matrix.\n"
":param R:  The input cost matrix.\n"
":param N:  The state-input cross-term cost matrix.\n"
":param dt: Discretization timestep.")
  )
    
;

  

    if (set_doc) {
        cls_LinearQuadraticRegulator.doc() = set_doc;
    }
    if (add_doc) {
        cls_LinearQuadraticRegulator.doc() = py::cast<std::string>(cls_LinearQuadraticRegulator.doc()) + add_doc;
    }

    cls_LinearQuadraticRegulator
  .def(py::init<const frc::LinearSystem<States, Inputs, 1>&, const wpi::array<double, States>&, const wpi::array<double, Inputs>&, units::second_t>())
  .def(py::init<const frc::LinearSystem<States, Inputs, 2>&, const wpi::array<double, States>&, const wpi::array<double, Inputs>&, units::second_t>());

}

}; // struct bind_frc__LinearQuadraticRegulator

}; // namespace rpygen