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