ARGoS  3
A parallel, multi-engine simulator for swarm robotics
plugins/robots/foot-bot/simulator/dynamics2d_footbot_model.h
Go to the documentation of this file.
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