twowheeled.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __TWO_WHEELED__
00025 #define __TWO_WHEELED__
00026
00027 #include <ode_robots/nimm2.h>
00028 #include <ode_robots/camera.h>
00029 #include <ode_robots/camerasensor.h>
00030 #include <ode_robots/imageprocessors.h>
00031 #include <ode_robots/sensor.h>
00032
00033 namespace lpzrobots {
00034
00035 typedef struct {
00036 Nimm2Conf n2cfg;
00037 CameraConf camcfg;
00038 bool useCamera;
00039 osg::Matrix camPos;
00040
00041
00042 CameraSensor* camSensor;
00043
00044 std::list<Sensor*> sensors;
00045
00046 void addSensor(Sensor* s) { sensors.push_back(s); }
00047 } TwoWheeledConf;
00048
00049
00050
00051
00052 class TwoWheeled : public Nimm2{
00053 public:
00054
00055
00056
00057
00058
00059
00060
00061
00062 TwoWheeled(const OdeHandle& odeHandle, const OsgHandle& osgHandle,
00063 TwoWheeledConf conf, const std::string& name);
00064
00065 static TwoWheeledConf getDefaultConf(){
00066 TwoWheeledConf conf;
00067 conf.n2cfg = Nimm2::getDefaultConf();
00068 conf.camcfg = Camera::getDefaultConf();
00069 conf.camcfg.width = 256;
00070 conf.camcfg.height = 64;
00071 conf.camcfg.fov = 90;
00072 conf.camcfg.camSize = 0.08;
00073 conf.camcfg.processors.push_back(new HSVImgProc(false,1));
00074
00075 conf.camcfg.processors.push_back(new ColorFilterImgProc(true, .5,
00076 HSVImgProc::Red+20, HSVImgProc::Green-20,100));
00077
00078 conf.camcfg.processors.push_back(new LineImgProc(true,20, 2));
00079 conf.useCamera = true;
00080 conf.camPos = osg::Matrix::rotate(M_PI/2,0,0,1)
00081 * osg::Matrix::translate(-0.20,0,0.40);
00082 conf.camSensor = 0;
00083 return conf;
00084 }
00085
00086 virtual ~TwoWheeled();
00087
00088 virtual void update();
00089
00090 virtual int getSensorNumber();
00091
00092 virtual int getSensors(sensor* sensors, int sensornumber);
00093
00094 virtual void sense(GlobalData& globalData);
00095
00096
00097 protected:
00098
00099
00100
00101 virtual void create(const osg::Matrix& pose);
00102
00103
00104
00105 virtual void destroy();
00106
00107 TwoWheeledConf conf;
00108 CameraSensor* camsensor;
00109 Camera* cam;
00110 };
00111
00112 }
00113
00114 #endif