Go to the documentation of this file.
16 #include <mrpt/img/TColor.h>
17 #include <mrpt/opengl/CSetOfLines.h>
18 #include <mrpt/opengl/CSetOfObjects.h>
19 #include <mrpt/poses/CPose2D.h>
47 using Ptr = std::shared_ptr<VehicleBase>;
64 const mrpt::math::TVector2D& force,
65 const mrpt::math::TPoint2D& applyPoint = mrpt::math::TPoint2D(0, 0))
override;
77 mrpt::math::TPoint2D getChassisCenterOfMass()
const
89 const mrpt::math::TTwist2D& veh_vel_local)
const;
114 for (
auto& logger :
loggers_) logger.second->setRecording(record);
118 for (
auto& logger :
loggers_) logger.second->clear();
122 for (
auto& logger :
loggers_) logger.second->newSession();
136 for (
auto& sensor :
sensors_) sensor->freeOpenGLResources();
144 std::map<std::string, std::shared_ptr<CSVLogger>>
loggers_;
150 const mrpt::optional_ref<mrpt::opengl::COpenGLScene>& viz,
151 const mrpt::optional_ref<mrpt::opengl::COpenGLScene>& physical,
bool childrenOnly)
override;
213 const mrpt::optional_ref<mrpt::opengl::COpenGLScene>& viz,
214 const mrpt::optional_ref<mrpt::opengl::COpenGLScene>& physical);
257 #define DECLARES_REGISTER_VEHICLE_DYNAMICS(CLASS_NAME) \
258 DECLARES_REGISTER_CLASS1(CLASS_NAME, VehicleBase, World*)
260 #define REGISTER_VEHICLE_DYNAMICS(TEXTUAL_NAME, CLASS_NAME) \
262 TClassFactory_vehicleDynamics, classFactory_vehicleDynamics, TEXTUAL_NAME, CLASS_NAME)
std::shared_ptr< FrictionBase > FrictionBasePtr
std::shared_ptr< CSVLogger > getLoggerPtr(std::string logger_name)
const mrpt::math::TPolygon2D & getChassisShape() const
std::vector< mrpt::opengl::CSetOfObjects::Ptr > glWheelsViz_
static constexpr char PL_Q_X[]
static constexpr char PL_DQ_X[]
void setVehicleIndex(size_t idx)
void internal_internalGuiUpdate_sensors(const mrpt::optional_ref< mrpt::opengl::COpenGLScene > &viz, const mrpt::optional_ref< mrpt::opengl::COpenGLScene > &physical)
Wheel & getWheelInfo(const size_t idx)
virtual float getMaxVehicleRadius() const
std::vector< b2Fixture * > & get_fixture_wheels()
TListSensors sensors_
Sensors aboard.
std::vector< b2Fixture * > fixture_wheels_
void freeOpenGLResources() override
mrpt::opengl::CSetOfObjects::Ptr glChassisPhysical_
std::vector< mrpt::math::TSegment3D > forceSegmentsForRendering_
mrpt::img::TColor chassis_color_
TListSensors & getSensors()
virtual void create_multibody_system(b2World &world)
static constexpr char PL_Q_Y[]
virtual mrpt::math::TTwist2D getVelocityLocalOdoEstimate() const =0
virtual ControllerBaseInterface * getControllerInterface()=0
FrictionBasePtr friction_
static constexpr char WL_FRIC_Y[]
static constexpr char PL_Q_PITCH[]
void internal_internalGuiUpdate_forces(mrpt::opengl::COpenGLScene &scene)
void setRecording(bool record)
A rigid body. These are created via b2World::CreateBody.
std::vector< mrpt::math::TVector2D > getWheelsVelocityLocal(const mrpt::math::TTwist2D &veh_vel_local) const
std::deque< Wheel > wheels_info_
virtual void initLoggers()
double chassisZMax() const
static constexpr char PL_Q_Z[]
std::mutex forceSegmentsForRenderingMtx_
TClassFactory_vehicleDynamics classFactory_vehicleDynamics
static constexpr char WL_FRIC_X[]
static constexpr char DL_TIMESTAMP[]
std::vector< mrpt::opengl::CSetOfObjects::Ptr > glWheelsPhysical_
static constexpr char LOGGER_WHEEL[]
size_t getVehicleIndex() const
virtual void apply_force(const mrpt::math::TVector2D &force, const mrpt::math::TPoint2D &applyPoint=mrpt::math::TPoint2D(0, 0)) override
const b2Fixture * get_fixture_chassis() const
void registerOnServer(mvsim::Client &c) override
mrpt::opengl::CSetOfLines::Ptr glForces_
virtual void internalGuiUpdate(const mrpt::optional_ref< mrpt::opengl::COpenGLScene > &viz, const mrpt::optional_ref< mrpt::opengl::COpenGLScene > &physical, bool childrenOnly) override
virtual void dynamics_load_params_from_xml(const rapidxml::xml_node< char > *xml_node)=0
virtual void writeLogStrings()
double chassisZMin() const
virtual void invoke_motor_controllers_post_step([[maybe_unused]] const TSimulContext &context)
b2Body * getBox2DChassisBody()
std::vector< mrpt::math::TSegment3D > torqueSegmentsForRendering_
static constexpr char LOGGER_POSE[]
static constexpr char WL_VEL_X[]
b2Fixture * get_fixture_chassis()
virtual std::vector< double > invoke_motor_controllers(const TSimulContext &context)=0
const TListSensors & getSensors() const
std::shared_ptr< Simulable > Ptr
VisualObject * meAsVisualObject() override
static constexpr char PL_Q_YAW[]
static constexpr char PL_DQ_Y[]
virtual void simul_pre_timestep(const TSimulContext &context) override
virtual double getChassisMass() const
const Wheel & getWheelInfo(const size_t idx) const
size_t getNumWheels() const
static void register_vehicle_class(const World &parent, const rapidxml::xml_node< char > *xml_node)
ClassFactory< VehicleBase, World * > TClassFactory_vehicleDynamics
std::map< std::string, std::shared_ptr< CSVLogger > > loggers_
VehicleBase(World *parent, size_t nWheels)
mrpt::math::TPolygon2D chassis_poly_
mrpt::opengl::CSetOfObjects::Ptr glChassisViz_
const std::vector< b2Fixture * > & get_fixture_wheels() const
static constexpr char PL_Q_ROLL[]
static constexpr char WL_TORQUE[]
virtual void simul_post_timestep(const TSimulContext &context) override
b2Fixture * fixture_chassis_
Created at.
static constexpr char PL_DQ_Z[]
void chassisAndWheelsVisible(bool visible)
mrpt::math::TPoint2D chassis_com_
static constexpr char WL_VEL_Y[]
mrpt::opengl::CSetOfLines::Ptr glMotorTorques_
static Ptr factory(World *parent, const rapidxml::xml_node< char > *xml_node)
std::vector< SensorBase::Ptr > TListSensors
void updateMaxRadiusFromPoly()
static constexpr char WL_WEIGHT[]
mvsim
Author(s):
autogenerated on Wed May 28 2025 02:13:08