ARGoS
3
A parallel, multi-engine simulator for swarm robotics
|
00001 00007 #ifndef DYNAMICS2D_FOOTBOT_MODEL_H 00008 #define DYNAMICS2D_FOOTBOT_MODEL_H 00009 00010 namespace argos { 00011 class CDynamics2DDifferentialSteeringControl; 00012 class CDynamics2DGripper; 00013 class CDynamics2DGrippable; 00014 } 00015 00016 #include <argos3/plugins/simulator/physics_engines/dynamics2d/dynamics2d_model.h> 00017 #include <argos3/plugins/simulator/physics_engines/dynamics2d/dynamics2d_differentialsteering_control.h> 00018 #include <argos3/plugins/robots/foot-bot/simulator/footbot_entity.h> 00019 00020 namespace argos { 00021 00022 class CDynamics2DFootBotModel : public CDynamics2DModel { 00023 00024 public: 00025 00026 CDynamics2DFootBotModel(CDynamics2DEngine& c_engine, 00027 CFootBotEntity& c_entity); 00028 virtual ~CDynamics2DFootBotModel(); 00029 00030 virtual bool MoveTo(const CVector3& c_position, 00031 const CQuaternion& c_orientation, 00032 bool b_check_only = false); 00033 00034 virtual void Reset(); 00035 00036 virtual void CalculateBoundingBox(); 00037 00038 virtual void UpdateEntityStatus(); 00039 virtual void UpdateFromEntityStatus(); 00040 00041 virtual bool IsCollidingWithSomething() const; 00042 00043 private: 00044 00045 void TurretPassiveToActive(); 00046 void TurretActiveToPassive(); 00047 00048 private: 00049 00050 CFootBotEntity& m_cFootBotEntity; 00051 CWheeledEntity& m_cWheeledEntity; 00052 CGripperEquippedEntity& m_cGripperEntity; 00053 00054 CDynamics2DDifferentialSteeringControl m_cDiffSteering; 00055 CDynamics2DGripper* m_pcGripper; 00056 CDynamics2DGrippable* m_pcGrippable; 00057 00058 cpFloat m_fMass; 00059 cpShape* m_ptBaseShape; 00060 cpShape* m_ptGripperShape; 00061 cpBody* m_ptActualBaseBody; 00062 cpBody* m_ptActualGripperBody; 00063 cpBody* m_ptControlGripperBody; 00064 cpConstraint* m_ptGripperControlAngularMotion; 00065 cpConstraint* m_ptBaseGripperLinearMotion; 00066 cpConstraint* m_ptBaseGripperAngularMotion; 00067 00068 const Real* m_fCurrentWheelVelocity; 00069 00070 UInt8 m_unLastTurretMode; 00071 Real m_fPreviousTurretAngleError; 00072 00073 }; 00074 00075 } 00076 00077 #endif