12 #include <mrpt/img/TColor.h>
13 #include <mvsim/PID_Controller.h>
14 #include <mvsim/PoseTrajectoryFollower.h>
15 #include <mvsim/VehicleBase.h>
40 void setMaxSteeringAngle(
double val) { max_steer_ang_ = val; }
50 double fl_torque, fr_torque, rl_torque, rr_torque;
67 double setpoint_wheel_torque_l, setpoint_wheel_torque_r, setpoint_steer_ang;
68 virtual void control_step(
81 static const char*
class_name() {
return "twist_front_steer_pid"; }
84 double setpoint_lin_speed,
86 virtual void control_step(
100 bool enable_antiwindup =
false;
101 bool enable_feedforward =
false;
102 double feedforward_gain = 1.0;
103 bool enable_reference_filter =
false;
104 double reference_filter_tau = 0.1;
105 int reference_filter_order = 1;
108 virtual bool setTwistCommand(
const mrpt::math::TTwist2D& t)
override
110 setpoint_lin_speed = t.vx;
116 double dist_fWheels_, r2f_L_;
119 double joyMaxLinSpeed = 1.0;
120 double joyMaxAngSpeed = 0.7;
129 static const char*
class_name() {
return "front_steer_pid"; }
135 virtual void control_step(
147 double joyMaxLinSpeed = 1.0;
148 double joyMaxSteerAng = 0.7;
165 static const char* class_name() {
return "twist_ideal"; }
170 auto lck = mrpt::lockHelper(setpointMtx_);
173 void setSetpoint(
const mrpt::math::TTwist2D& sp)
175 auto lck = mrpt::lockHelper(setpointMtx_);
179 virtual void control_step(
183 virtual void on_post_step(
const TSimulContext& context)
override;
189 virtual bool setTwistCommand(
const mrpt::math::TTwist2D& t)
override
196 mutable std::mutex setpointMtx_;
197 mrpt::math::TTwist2D setpoint_{0, 0, 0};
201 double joyMaxLinSpeed = 1.0;
202 double joyMaxAngSpeed = 0.7;
229 static const char* class_name() {
return "trajectory"; }
231 virtual void control_step(
235 virtual void on_post_step(
const TSimulContext& context)
override;
239 bool getTrajectoryPlotPoints(
240 std::vector<mrpt::math::TPoint2D>& pts,
double& height)
const override;
244 mrpt::math::TTwist2D lastTwist_{0, 0, 0};
247 double vizHeight_ = 0.5;
250 const ControllerBase::Ptr& getController()
const {
return controller_; }
251 ControllerBase::Ptr& getController() {
return controller_; }
252 virtual ControllerBaseInterface* getControllerInterface()
override {
return controller_.get(); }
264 const double desired_equiv_steer_ang,
double& out_fl_ang,
double& out_fr_ang)
const;
270 virtual std::vector<double> invoke_motor_controllers(
const TSimulContext& context)
override;
271 virtual void invoke_motor_controllers_post_step(
const TSimulContext& context)
override;
274 ControllerBase::Ptr controller_;
277 double max_steer_ang_ = mrpt::DEG2RAD(30);
Definition: ControllerBase.h:77
Definition: VehicleAckermann.h:126
static const char * class_name()
Definition: VehicleAckermann.h:129
double KD
PID controller parameters.
Definition: VehicleAckermann.h:141
virtual void teleop_interface(const TeleopInput &in, TeleopOutput &out) override
double setpoint_steer_ang
Definition: VehicleAckermann.h:132
double max_torque
Maximum abs. value torque (for clamp) [Nm].
Definition: VehicleAckermann.h:142
Definition: VehicleAckermann.h:61
virtual void teleop_interface(const TeleopInput &in, TeleopOutput &out) override
static const char * class_name()
Definition: VehicleAckermann.h:64
Definition: VehicleAckermann.h:226
Definition: VehicleAckermann.h:78
static const char * class_name()
Definition: VehicleAckermann.h:81
double max_torque
Definition: VehicleAckermann.h:94
double zero_threshold
setpoint magnitude below which it is treated as zero [m/s]
Definition: VehicleAckermann.h:96
double setpoint_ang_speed
desired velocities (m/s) and (rad/s)
Definition: VehicleAckermann.h:85
double stop_threshold
velocity magnitude below which vehicle is considered stopped [m/s]
Definition: VehicleAckermann.h:98
double N
Derivative filter coefficient.
Definition: VehicleAckermann.h:93
virtual void teleop_interface(const TeleopInput &in, TeleopOutput &out) override
double KD
PID controller parameters.
Definition: VehicleAckermann.h:92
Definition: VehicleAckermann.h:162
mrpt::math::TTwist2D setpoint() const
Definition: VehicleAckermann.h:168
virtual void teleop_interface(const TeleopInput &in, TeleopOutput &out) override
Definition: VehicleAckermann.h:24
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:39
Definition: PoseTrajectoryFollower.h:38
Definition: VehicleBase.h:44
Definition: ControllerBase.h:34
Definition: VehicleAckermann.h:49
double steer_ang
Equivalent Ackermann steering angle.
Definition: VehicleAckermann.h:51
Definition: PID_Controller.h:21
Definition: basic_types.h:58