12 #include <mrpt/img/TColor.h>
13 #include <mvsim/PID_Controller.h>
14 #include <mvsim/VehicleBase.h>
47 DIFF_TORSEN_FRONT = 3,
58 void setMaxSteeringAngle(
double val) { max_steer_ang_ = val; }
84 double setpoint_wheel_torque, setpoint_steer_ang;
85 virtual void control_step(
98 static const char*
class_name() {
return "twist_front_steer_pid"; }
101 double setpoint_lin_speed,
103 virtual void control_step(
113 bool enable_antiwindup =
false;
114 bool enable_feedforward =
false;
115 double feedforward_gain = 1.0;
116 bool enable_reference_filter =
false;
117 double reference_filter_tau = 0.1;
118 int reference_filter_order = 1;
121 virtual bool setTwistCommand(
const mrpt::math::TTwist2D& t)
override
123 setpoint_lin_speed = t.vx;
129 double dist_fWheels_, r2f_L_;
132 double joyMaxLinSpeed = 1.0;
133 double joyMaxAngSpeed = 0.7;
140 static const char*
class_name() {
return "front_steer_pid"; }
146 virtual void control_step(
159 const ControllerBase::Ptr& getController()
const {
return controller_; }
160 ControllerBase::Ptr& getController() {
return controller_; }
161 virtual ControllerBaseInterface* getControllerInterface()
override {
return controller_.get(); }
173 const double desired_equiv_steer_ang,
double& out_fl_ang,
double& out_fr_ang)
const;
178 const double w1,
const double w2,
const double diffBias,
const double defaultSplitRatio,
179 double& t1,
double& t2);
185 virtual std::vector<double> invoke_motor_controllers(
const TSimulContext& context)
override;
188 ControllerBase::Ptr controller_;
190 double max_steer_ang_;
193 DifferentialType diff_type_;
195 double FrontRearSplit_;
196 double FrontLRSplit_;
199 double FrontRearBias_;
Definition: ControllerBase.h:60
Definition: VehicleAckermann_Drivetrain.h:137
double setpoint_steer_ang
Definition: VehicleAckermann_Drivetrain.h:143
virtual void teleop_interface(const TeleopInput &in, TeleopOutput &out) override
double max_torque
Maximum abs. value torque (for clamp) [Nm].
Definition: VehicleAckermann_Drivetrain.h:153
double KD
PID controller parameters.
Definition: VehicleAckermann_Drivetrain.h:152
static const char * class_name()
Definition: VehicleAckermann_Drivetrain.h:140
Definition: VehicleAckermann_Drivetrain.h:78
virtual void teleop_interface(const TeleopInput &in, TeleopOutput &out) override
static const char * class_name()
Definition: VehicleAckermann_Drivetrain.h:81
Definition: VehicleAckermann_Drivetrain.h:95
double setpoint_ang_speed
desired velocities (m/s) and (rad/s)
Definition: VehicleAckermann_Drivetrain.h:102
virtual void teleop_interface(const TeleopInput &in, TeleopOutput &out) override
static const char * class_name()
Definition: VehicleAckermann_Drivetrain.h:98
double KD
PID controller parameters.
Definition: VehicleAckermann_Drivetrain.h:109
double N
Derivative filter coefficient.
Definition: VehicleAckermann_Drivetrain.h:110
double max_torque
Maximum abs. value torque (for clamp) [Nm].
Definition: VehicleAckermann_Drivetrain.h:111
Definition: VehicleAckermann_Drivetrain.h:29
void computeDiffTorqueSplit(const double w1, const double w2, const double diffBias, const double defaultSplitRatio, double &t1, double &t2)
double getMaxSteeringAngle() const
Definition: VehicleAckermann_Drivetrain.h:57
virtual void dynamics_load_params_from_xml(const rapidxml::xml_node< char > *xml_node) override
void computeFrontWheelAngles(const double desired_equiv_steer_ang, double &out_fl_ang, double &out_fr_ang) const
virtual mrpt::math::TTwist2D getVelocityLocalOdoEstimate() const override
Definition: VehicleBase.h:44
Definition: ControllerBase.h:34
Definition: VehicleAckermann_Drivetrain.h:67
double steer_ang
Equivalent Ackermann steering angle.
Definition: VehicleAckermann_Drivetrain.h:69
Definition: PID_Controller.h:21
Definition: basic_types.h:58