14 using namespace mvsim;
19 setpoint_lin_speed(0),
20 setpoint_steer_ang(0),
37 const double v = setpoint_lin_speed;
39 if (setpoint_steer_ang == 0.0)
47 const double R = r2f_L_ / tan(setpoint_steer_ang);
52 twist_control_.setpoint_lin_speed = v;
53 twist_control_.setpoint_ang_speed = w;
55 twist_control_.KP = KP;
56 twist_control_.KI = KI;
57 twist_control_.KD = KD;
58 twist_control_.max_torque = max_torque;
60 twist_control_.control_step(ci, co);
70 params[
"max_torque"] =
TParamEntry(
"%lf", &max_torque);
73 params[
"V"] =
TParamEntry(
"%lf", &this->setpoint_lin_speed);
74 params[
"STEER_ANG"] =
TParamEntry(
"%lf_deg", &this->setpoint_steer_ang);
88 setpoint_lin_speed += 0.1;
93 setpoint_lin_speed -= 0.1;
98 setpoint_steer_ang += 1.0 * M_PI / 180.0;
99 mrpt::keep_min(setpoint_steer_ang, veh_.getMaxSteeringAngle());
104 setpoint_steer_ang -= 1.0 * M_PI / 180.0;
105 mrpt::keep_max(setpoint_steer_ang, -veh_.getMaxSteeringAngle());
108 setpoint_lin_speed = .0;
114 if (in.
js && in.
js->axes.size() >= 2)
116 const auto& js = in.
js.value();
117 const float js_x = js.axes[0];
118 const float js_y = js.axes[1];
120 setpoint_lin_speed = -js_y * joyMaxLinSpeed;
121 setpoint_steer_ang = -js_x * joyMaxSteerAng;
123 if (js.buttons.size() >= 7)
125 if (js.buttons[5]) joyMaxLinSpeed *= 1.01;
126 if (js.buttons[7]) joyMaxLinSpeed /= 1.01;
128 if (js.buttons[4]) joyMaxSteerAng *= 1.01;
129 if (js.buttons[6]) joyMaxSteerAng /= 1.01;
133 setpoint_lin_speed = 0;
139 "maxLinSpeed=%.03f m/s\n"
140 "maxSteerAng=%.03f deg\n",
141 joyMaxLinSpeed, mrpt::RAD2DEG(joyMaxSteerAng));
147 "w/s=forward/backward.\n"
153 "setpoint: v=%.03f steer=%.03f deg\n", setpoint_lin_speed,
154 setpoint_steer_ang * 180.0 / M_PI);