iCub-main
fakePalm.h
Go to the documentation of this file.
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
2 
3 /*
4  * Copyright (C) 2009 RobotCub Consortium
5  * Author: Marco Maggiali marco.maggiali@iit.it
6  * CopyPolicy: Released under the terms of the GNU GPL v2.0.
7  *
8  */
9 
10 #include "include/TouchSensor.h"
11 
12 #ifndef __ALE_FPALM_H__
13 #define __ALE_FPALM_H__
14 
15 class fakePalm : public TouchSensor
16 {
17 public:
18  fakePalm(double cx,double cy,double th,double gain=1.0,int layoutNum=0,int lrMirror=0)
19  {
20  const double DEG2RAD=M_PI/180.0;
21 
22  const double CST=cos(DEG2RAD*th);
23  const double SNT=sin(DEG2RAD*th);
24 
25  const double H=sin(DEG2RAD*60.0);
26  const double L=2.0*H/9.0;
27 
28  dGain=gain;
29  dGain=0.0; // for now to stick the dots to be always OFF
30  ilrMirror=lrMirror;
31  ilayoutNum=layoutNum;
32  nVerts=4;
33  nTaxels=1;
34  m_RadiusOrig=0.1;
35 
36  for (int i=0; i<nTaxels; ++i)
37  {
38  dX[0]=15; //not used
39  dY[0]=15; //not used
40  dX[i] = 0.0; dY[i] = 0.0;
41  }
42 
43 
44 
45 
46 
47  for (int i=0; i<nTaxels; ++i)
48  {
49  double x=1.2*dX[i]-0.0;
50  double y=1.2*dY[i]-0.0;
51 
52  if (lrMirror==1) x=-x;
53  dX[i]=cx+CST*x-SNT*y;
54  dY[i]=cy+SNT*x+CST*y;
55  }
56 
57  dXv[0]=-25;
58  dYv[0]=-50;
59  dXv[1]=+50;
60  dYv[1]=-50;
61  dXv[2]=+50;
62  dYv[2]=+50;
63  dXv[3]=-25;
64  dYv[3]=+50;
65 
66  for (int i=0; i<nVerts; ++i)
67  {
68  double x=dXv[i];
69  double y=dYv[i];
70  if (lrMirror==1) x=-x;
71  dXv[i]=cx+CST*x-SNT*y;
72  dYv[i]=cy+SNT*x+CST*y;
73  }
74 
75  // in static definition
76  //dXmin=dYmin= HUGE;
77  //dXmax=dYmax=-HUGE;
78 
79  for (int i=0; i<nVerts; ++i)
80  {
81  if (dXv[i]<dXmin) dXmin=dXv[i];
82  if (dXv[i]>dXmax) dXmax=dXv[i];
83  if (dYv[i]<dYmin) dYmin=dYv[i];
84  if (dYv[i]>dYmax) dYmax=dYv[i];
85  }
86 
87  dXc=cx;
88  dYc=cy;
89  }
90  void draw(unsigned char *image)
91  {
92  for (int i=0; i<nVerts; ++i)
93  {
94  //drawLine(image,xv[i],yv[i],xv[(i+1)%nVerts],yv[(i+1)%nVerts]);
95  }
96 
97  for (int i=0; i<nTaxels; ++i)
98  {
99  if ((i==43) || (i==23) || (i==11) || (i==35) )
100  {
101  drawCircle(image,x[i],y[i],m_Radius/2);
102  }
103  else
104  drawCircle(image,x[i],y[i],m_Radius);
105  }
106  }
107 };
108 
109 #endif
#define M_PI
Definition: XSensMTx.cpp:24
constexpr double DEG2RAD
double dX[MAX_TAXELS]
Definition: TouchSensor.h:382
double dYc
Definition: TouchSensor.h:385
double m_Radius
Definition: TouchSensor.h:390
int x[MAX_TAXELS]
Definition: TouchSensor.h:402
double m_RadiusOrig
Definition: TouchSensor.h:390
static double dXmin
Definition: TouchSensor.h:383
double dXc
Definition: TouchSensor.h:385
static double dYmax
Definition: TouchSensor.h:383
double dXv[8]
Definition: TouchSensor.h:384
double dY[MAX_TAXELS]
Definition: TouchSensor.h:382
static double dXmax
Definition: TouchSensor.h:383
double dYv[8]
Definition: TouchSensor.h:384
double dGain
Definition: TouchSensor.h:386
int y[MAX_TAXELS]
Definition: TouchSensor.h:402
void drawCircle(unsigned char *image, int cx, int cy, double radius)
Definition: TouchSensor.h:353
static double dYmin
Definition: TouchSensor.h:383
fakePalm(double cx, double cy, double th, double gain=1.0, int layoutNum=0, int lrMirror=0)
Definition: fakePalm.h:18
void draw(unsigned char *image)
Definition: fakePalm.h:90