iCub-main
Fingertip3Right.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_FINGERTIP3_R_H__
13 #define __ALE_FINGERTIP3_R_H__
14 
15 class Fingertip3R : public TouchSensor
16 {
17 public:
18  Fingertip3R(double cx,double cy,double th,double gain=1.0,int layoutNum=0,int lrMirror=0)
19  {
20  dGain=gain;
21  ilrMirror=lrMirror;
22  ilayoutNum=layoutNum;
23  nVerts=7;
24  nTaxels=12;
25 
26  dY[4]=-20.0; dX[4]= -30.0;
27  dY[5]=-20.0; dX[5]= 0.0;
28  dY[6]=-20.0; dX[6]= 30.0;
29  dY[8]=-39.0; dX[8]= 45.0;
30  dY[7]=-39.0; dX[7]= -45.0;
31  dY[9]=-58.0; dX[9]= 30.0;
32  dY[10]=-58.0; dX[10]= 0.0;
33  dY[11]=-58.0; dX[11]= -30.0;
34  dY[3]= 10.0; dX[3]= -25.0;
35  dY[2]= 00.0; dX[2]= 0.0;
36  dY[1]= 10.0; dX[1]= 25.;
37  dY[0]= 40.0; dX[0]= 0.0;
38 
39  lrMirror=0; //forcing mirror
40 
41  dXv[0]=53.0; dYv[0]= 0.0;
42  dXv[1]=53.0; dYv[1]=45.0;
43  dXv[2]=dX[3]+10.0; dYv[2]=dY[3]+10.0;
44  dXv[3]=0.0; dYv[3]=dY[5]+12.0;
45  dXv[4]=-dXv[2]; dYv[4]=dYv[2];
46  dXv[5]=-dXv[1]; dYv[5]=dYv[1];
47  dXv[6]=-dXv[0]; dYv[6]=dYv[0];
48 
49  const double scale=2.7/15.3;
50  for (int i=0; i<nTaxels; ++i)
51  {
52  dX[i]*=scale;
53  dY[i]*=scale;
54  }
55  for (int i=0; i<nVerts; ++i)
56  {
57  dXv[i]*=scale;
58  dYv[i]*=scale;
59  }
60 
61  m_RadiusOrig=1.8;
62 
63  const double DEG2RAD=M_PI/180.0;
64  const double CST=cos(DEG2RAD*th);
65  const double SNT=sin(DEG2RAD*th);
66 
67  for (int i=0; i<nTaxels; ++i)
68  {
69  double x=dX[i];
70  double y=dY[i];
71  if (lrMirror==1) x=-x;
72 
73  dX[i]=cx+CST*x-SNT*y;
74  dY[i]=cy+SNT*x+CST*y;
75  }
76 
77  for (int i=0; i<nVerts; ++i)
78  {
79  double x=dXv[i];
80  double y=dYv[i];
81  if (lrMirror==1) x=-x;
82 
83  dXv[i]=0;
84  dYv[i]=0;
85  }
86 
87  // in static definition
88  //dXmin=dYmin= HUGE;
89  //dXmax=dYmax=-HUGE;
90 
91  for (int i=0; i<nVerts; ++i)
92  {
93  if (dXv[i]<dXmin) dXmin=dXv[i];
94  if (dXv[i]>dXmax) dXmax=dXv[i];
95  if (dYv[i]<dYmin) dYmin=dYv[i];
96  if (dYv[i]>dYmax) dYmax=dYv[i];
97  }
98 
99  dXc=cx;
100  dYc=cy;
101  }
102 };
103 
104 #endif
#define M_PI
Definition: XSensMTx.cpp:24
constexpr double DEG2RAD
Fingertip3R(double cx, double cy, double th, double gain=1.0, int layoutNum=0, int lrMirror=0)
double dX[MAX_TAXELS]
Definition: TouchSensor.h:382
double dYc
Definition: TouchSensor.h:385
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
static double dYmin
Definition: TouchSensor.h:383