10 #include <mrpt/opengl/COpenGLScene.h> 18 using namespace mvsim;
23 World* parent,
const std::vector<ConfigPerWheel>& cfgPerWheel)
25 configPerWheel_(cfgPerWheel)
52 const std::map<std::string, std::string> varValues = {{
"NAME",
name_}};
67 *xml_chassis, attribs, varValues,
68 "[DynamicsDifferential::dynamics_load_params_from_xml]");
76 "[DynamicsDifferential::dynamics_load_params_from_xml]");
109 if (!control_class || !control_class->
value())
111 "[DynamicsDifferential] Missing 'class' attribute in " 112 "<controller> XML node");
114 const std::string sCtrlClass = std::string(control_class->
value());
116 controller_ = std::make_shared<ControllerRawForces>(*
this);
118 controller_ = std::make_shared<ControllerTwistPID>(*
this);
120 controller_ = std::make_shared<ControllerTwistIdeal>(*
this);
123 "[DynamicsDifferential] Unknown 'class'='%s' in " 124 "<controller> XML node",
133 controller_ = std::make_shared<ControllerRawForces>(*this);
141 std::vector<double> otpw;
171 THROW_EXCEPTION(
"Unexpected number of wheels!");
186 mrpt::math::TTwist2D odo_vel;
200 "The two wheels of a differential vehicle cannot be at the same Y " 203 const double w_veh = (w1 * R1 - w0 * R0) / Ay;
208 odo_vel.omega = w_veh;
This file contains rapidxml parser and DOM implementation.
void updateMaxRadiusFromPoly()
ControllerBase::Ptr controller_
The installed controller.
std::map< std::string, TParamEntry > TParameterDefinitions
virtual void dynamics_load_params_from_xml(const rapidxml::xml_node< char > *xml_node) override
DynamicsDifferential(World *parent)
virtual std::vector< double > invoke_motor_controllers(const TSimulContext &context) override
void parse_xmlnode_attribs(const rapidxml::xml_node< char > &xml_node, const TParameterDefinitions ¶ms, const std::map< std::string, std::string > &variableNamesValues={}, const char *functionNameContext="")
std::deque< Wheel > wheels_info_
static const char * class_name()
xml_node< Ch > * first_node(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const
virtual void invoke_motor_controllers_post_step(const TSimulContext &context) override
mrpt::math::TPolygon2D chassis_poly_
b2Fixture * fixture_chassis_
Created at.
static const char * class_name()
mrpt::img::TColor chassis_color_
virtual mrpt::math::TTwist2D getVelocityLocalOdoEstimate() const override
void parse_xmlnode_shape(const rapidxml::xml_node< char > &xml_node, mrpt::math::TPolygon2D &out_poly, const char *functionNameContext="")
static const char * class_name()
const std::vector< ConfigPerWheel > configPerWheel_
Defined at ctor time:
size_t getNumWheels() const
xml_attribute< Ch > * first_attribute(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const
std::vector< b2Fixture * > fixture_wheels_