00001 00007 #ifndef POINTMASS3D_FOOTBOT_H 00008 #define POINTMASS3D_FOOTBOT_H 00009 00010 namespace argos { 00011 class CPointMass3DEngine; 00012 class CPointMass3DFootBotModel; 00013 class CFootBotEntity; 00014 } 00015 00016 #include <argos3/plugins/simulator/physics_engines/pointmass3d/pointmass3d_model.h> 00017 #include <argos3/core/simulator/entity/embodied_entity.h> 00018 #include <argos3/plugins/robots/foot-bot/simulator/footbot_entity.h> 00019 00020 namespace argos { 00021 00022 class CPointMass3DFootBotModel : public CPointMass3DModel { 00023 00024 public: 00025 00026 CPointMass3DFootBotModel(CPointMass3DEngine& c_engine, 00027 CFootBotEntity& c_footbot); 00028 00029 virtual ~CPointMass3DFootBotModel() {} 00030 00031 virtual void Reset(); 00032 00033 virtual void UpdateFromEntityStatus(); 00034 virtual void Step(); 00035 00036 virtual void CalculateBoundingBox(); 00037 00038 virtual bool CheckIntersectionWithRay(Real& f_t_on_ray, 00039 const CRay3& c_ray) const; 00040 00041 virtual void UpdateOriginAnchor(SAnchor& s_anchor); 00042 00043 private: 00044 00046 CWheeledEntity& m_cWheeledEntity; 00047 00049 CRadians m_cYaw; 00050 00052 Real m_fAngularVelocity; 00053 00055 const Real* m_fCurrentWheelVelocity; 00056 }; 00057 00058 } 00059 00060 #endif