12 #include <mrpt/img/TColor.h>
13 #include <mvsim/PID_Controller.h>
14 #include <mvsim/VehicleBase.h>
39 void setMaxSteeringAngle(
double val) { max_steer_ang_ = val; }
49 double fl_torque, fr_torque, rl_torque, rr_torque;
66 double setpoint_wheel_torque_l, setpoint_wheel_torque_r, setpoint_steer_ang;
67 virtual void control_step(
80 static const char*
class_name() {
return "twist_front_steer_pid"; }
83 double setpoint_lin_speed,
85 virtual void control_step(
99 bool enable_antiwindup =
false;
100 bool enable_feedforward =
false;
101 double feedforward_gain = 1.0;
102 bool enable_reference_filter =
false;
103 double reference_filter_tau = 0.1;
104 int reference_filter_order = 1;
107 virtual bool setTwistCommand(
const mrpt::math::TTwist2D& t)
override
109 setpoint_lin_speed = t.vx;
115 double dist_fWheels_, r2f_L_;
118 double joyMaxLinSpeed = 1.0;
119 double joyMaxAngSpeed = 0.7;
128 static const char*
class_name() {
return "front_steer_pid"; }
134 virtual void control_step(
146 double joyMaxLinSpeed = 1.0;
147 double joyMaxSteerAng = 0.7;
164 static const char* class_name() {
return "twist_ideal"; }
169 auto lck = mrpt::lockHelper(setpointMtx_);
172 void setSetpoint(
const mrpt::math::TTwist2D& sp)
174 auto lck = mrpt::lockHelper(setpointMtx_);
178 virtual void control_step(
182 virtual void on_post_step(
const TSimulContext& context)
override;
187 virtual bool setTwistCommand(
const mrpt::math::TTwist2D& t)
override
194 mutable std::mutex setpointMtx_;
195 mrpt::math::TTwist2D setpoint_{0, 0, 0};
199 double joyMaxLinSpeed = 1.0;
200 double joyMaxAngSpeed = 0.7;
203 const ControllerBase::Ptr& getController()
const {
return controller_; }
204 ControllerBase::Ptr& getController() {
return controller_; }
205 virtual ControllerBaseInterface* getControllerInterface()
override {
return controller_.get(); }
217 const double desired_equiv_steer_ang,
double& out_fl_ang,
double& out_fr_ang)
const;
223 virtual std::vector<double> invoke_motor_controllers(
const TSimulContext& context)
override;
224 virtual void invoke_motor_controllers_post_step(
const TSimulContext& context)
override;
227 ControllerBase::Ptr controller_;
230 double max_steer_ang_ = mrpt::DEG2RAD(30);
Definition: ControllerBase.h:60
Definition: VehicleAckermann.h:125
static const char * class_name()
Definition: VehicleAckermann.h:128
double KD
PID controller parameters.
Definition: VehicleAckermann.h:140
virtual void teleop_interface(const TeleopInput &in, TeleopOutput &out) override
double setpoint_steer_ang
Definition: VehicleAckermann.h:131
double max_torque
Maximum abs. value torque (for clamp) [Nm].
Definition: VehicleAckermann.h:141
Definition: VehicleAckermann.h:60
virtual void teleop_interface(const TeleopInput &in, TeleopOutput &out) override
static const char * class_name()
Definition: VehicleAckermann.h:63
Definition: VehicleAckermann.h:77
static const char * class_name()
Definition: VehicleAckermann.h:80
double max_torque
Definition: VehicleAckermann.h:93
double zero_threshold
setpoint magnitude below which it is treated as zero [m/s]
Definition: VehicleAckermann.h:95
double setpoint_ang_speed
desired velocities (m/s) and (rad/s)
Definition: VehicleAckermann.h:84
double stop_threshold
velocity magnitude below which vehicle is considered stopped [m/s]
Definition: VehicleAckermann.h:97
double N
Derivative filter coefficient.
Definition: VehicleAckermann.h:92
virtual void teleop_interface(const TeleopInput &in, TeleopOutput &out) override
double KD
PID controller parameters.
Definition: VehicleAckermann.h:91
Definition: VehicleAckermann.h:161
mrpt::math::TTwist2D setpoint() const
Definition: VehicleAckermann.h:167
virtual void teleop_interface(const TeleopInput &in, TeleopOutput &out) override
Definition: VehicleAckermann.h:23
void computeFrontWheelAngles(const double desired_equiv_steer_ang, double &out_fl_ang, double &out_fr_ang) const
virtual void dynamics_load_params_from_xml(const rapidxml::xml_node< char > *xml_node) override
virtual mrpt::math::TTwist2D getVelocityLocalOdoEstimate() const override
double getMaxSteeringAngle() const
Definition: VehicleAckermann.h:38
Definition: VehicleBase.h:44
Definition: ControllerBase.h:34
Definition: VehicleAckermann.h:48
double steer_ang
Equivalent Ackermann steering angle.
Definition: VehicleAckermann.h:50
Definition: PID_Controller.h:21
Definition: basic_types.h:58