ARGoS  3
A parallel, multi-engine simulator for swarm robotics
plugins/robots/e-puck/simulator/dynamics2d_epuck_model.h
Go to the documentation of this file.
00001 
00007 #ifndef DYNAMICS2D_EPUCK_MODEL_H
00008 #define DYNAMICS2D_EPUCK_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/e-puck/simulator/epuck_entity.h>
00019 
00020 namespace argos {
00021 
00022    class CDynamics2DEPuckModel : public CDynamics2DModel {
00023 
00024    public:
00025 
00026       CDynamics2DEPuckModel(CDynamics2DEngine& c_engine,
00027                               CEPuckEntity& c_entity);
00028       virtual ~CDynamics2DEPuckModel();
00029       
00030       virtual bool CheckIntersectionWithRay(Real& f_t_on_ray,
00031                                             const CRay3& c_ray) const;
00032 
00033       virtual bool MoveTo(const CVector3& c_position,
00034                           const CQuaternion& c_orientation,
00035                           bool b_check_only = false);
00036 
00037       virtual void Reset();
00038 
00039       virtual void CalculateBoundingBox();
00040 
00041       virtual void UpdateEntityStatus();
00042       virtual void UpdateFromEntityStatus();
00043 
00044       virtual bool IsCollidingWithSomething() const;
00045 
00046    private:
00047 
00048       CEPuckEntity& m_cEPuckEntity;
00049       CWheeledEntity& m_cWheeledEntity;
00050 
00051       CDynamics2DDifferentialSteeringControl m_cDiffSteering;
00052 
00053       cpFloat  m_fMass;
00054       cpShape* m_ptBaseShape;
00055       cpBody*  m_ptActualBaseBody;
00056 
00057       const Real* m_fCurrentWheelVelocity;
00058 
00059    };
00060 
00061 }
00062 
00063 #endif