-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathleftFingersHapticRetargetingParams.ini
173 lines (130 loc) · 8.38 KB
/
leftFingersHapticRetargetingParams.ini
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
###############
### ROBOT
###############
remote_control_boards ("left_arm")
remote_sensor_boards "left_hand"
axis_list ( "l_thumb_add", "l_thumb_oc", "l_index_oc", "l_middle_oc", "l_ring_pinky_oc")
all_axis_list ( "l_thumb_add", "l_thumb_oc", "l_index_add", "l_index_oc", "l_middle_oc", "l_ring_pinky_oc")
joint_list ( "l_thumb_add", "l_thumb_oc", "l_index_add", "l_index_oc", "l_middle_oc", "l_ring_pinky_oc" )
# the custom range of axes motion [degrees]
# axis-name , min value, max value
# axes_custom_motion_range ( ( ${AXES_NAME} , ${MIN}, ${MAX}) )
# the custom axes home angle value [degrees]
# By default it home values are set to min axis values
# axis-name , axis value
#axes_custom_home_angle ( ( "l_thumb_oppose" , 30) )
# if a joint is not listed here, the sensory information is of encoder type.
# notice that "l_thumb_oppose" and "l_hand_fingers" is measured by joint encoders not the analog sensors
analog_list ( )
#Adding the groups of each axis and associated joints
l_thumb_add ( "l_thumb_add" )
l_thumb_oc ( "l_thumb_oc" )
l_index_add ( "l_index_add" )
l_index_oc ( "l_index_oc" )
l_middle_oc ( "l_middle_oc" )
l_ring_pinky_oc ( "l_ring_pinky_oc" )
robot_finger_list ( "l_thumb_finger", "l_index_finger", "l_middle_finger", "l_ring_finger", "l_little_finger")
###############
### HUMAN
###############
human_joint_list ( "l_thumb_oppose", "l_thumb_proximal", "l_thumb_middle", "l_thumb_distal",
"l_index_abduction", "l_index_proximal", "l_index_middle", "l_index_distal",
"l_middle_abduction", "l_middle_proximal", "l_middle_middle", "l_middle_distal",
"l_ring_abduction", "l_ring_proximal", "l_ring_middle", "l_ring_distal",
"l_pinky_abduction", "l_pinky_proximal", "l_pinky_middle", "l_pinky_distal" )
human_finger_list ( "l_thumb_finger", "l_index_finger", "l_middle_finger", "l_ring_finger", "l_little_finger")
hand_link l_hand
wearable_data_ports ("/WearableData/HapticGlove/LeftHand/data:o")
wearable_data_locals ("/WearableData/HapticGlove/LeftHand/data:i")
wearable_data_actuator_ports_out "/WearableData/HapticGlove/LeftHand/Actuators/input:o"
wearable_data_actuator_ports_in "/WearableData/HapticGlove/LeftHand/Actuators/input:i"
###############
### RETARGETING
###############
motorsJointsCoupled 0
robot_to_human_map ( ("l_thumb_add", "l_thumb_oppose")
("l_thumb_oc", "l_thumb_distal")
("l_index_add", "l_index_abduction" )
("l_index_oc", "l_index_distal")
("l_middle_oc", "l_middle_distal")
("l_ring_pinky_oc", "l_ring_distal") )
# haptic feedback retargeting from the robot axis groups to the human finger
l_thumb_finger ( "l_thumb_add", "l_thumb_oc" )
l_index_finger ( "l_index_add", "l_index_oc" )
l_middle_finger ( "l_middle_oc" )
l_ring_finger ( "l_ring_pinky_oc" )
l_little_finger ( "l_ring_pinky_oc" )
# This gain is multiplied to the total error for each motor/axis to compute the force feedback to the user associated with each axis,
# defined according to user experience
# Number of gains = number of motors/axis
gainTotalError ( 0.0 15.0 15.0 15.0 15.0 15.0)
#gainTotalError ( 0.0 0.0 0.0 0.0 0.0 0.0)
# check this issue for the velocity Gain: https://github.com/dic-iit/element_retargeting-from-human/issues/141
# number of gains = number of motors/axis
gainVelocityError ( 0.0 0.1 0.1 0.1 0.1 0.1)
#gainVelocityError ( 0.0 0.0 0.0 0.0 0.0 0.0)
# this value is multiplied to forcefeedback and provides haptic feedback to the user
gainVibrotactile (0.8 0.8 0.8 0.8 0.8 )
#gainVibrotactile ( 0.0 0.0 0.0 0.0 0.0 )
# scaling and biased values for maping the human to robot motion
# the sign of the following vector is important, while the absolute values will be found at configuration file
human_to_robot_joint_angles_scaling ( -1.0 1.0 -1.0 1.0 1.0 1.0 )
human_to_robot_joint_anlges_bias ( 0.0 0.0 0.0 0.0 0.0 0.0 )
axisContactThreshold 0.1
##############################
### ROBOT CONTROL & ESTIMATION
##############################
useVelocity 0
referenceVelocityForPositionControl 100.0
# minimum and maximum values of the joints
# related to analog sensors
analog_joints_min_boundary ( )
analog_joints_max_boundary ( )
# hall sensors minimum and maximum values
analog_sensors_raw_min_boundary ( )
analog_sensors_raw_max_boundary ( )
# in case each joint does not have independant motor to actuate, they are coupled
axesJointsCoupled 0
# in case a calibration phase necessary before starting teleoperating the robot,
# otherwise read the calibration matrix from the config file
doCalibration 0
#robot controller exponential filter gain
exponentialFilterGain 0.9
# in the Quadratic optimizartion problem to compute the motor values from the joint values : xT Q X + uT R u
# q_matrix_joint_motor is a list that identifies the main diagonal values of matrix Q: (q x q) matrix;
# size of q: is the number of desired joints to control
# r_matrix_joint_motor is a list that identifies the main diagonal of matrix R: (m x m) matrix;
# size of m: is the number of desired motors to control
q_qp_control ( 1.0 1.0 1.0 1.0 1.0 1.0 )
r_qp_control ( 0.0 0.0 0.0 0.0 0.0 0.0 )
# in the Kalman filter problem to estimate the axis values, velocity and acceleration:
# q_matrix_kf is a list that identifies the main diagonal of matrix: E[ (w(t) -w_bar(t)) (w(t) -w_bar(t))^T ],
# size: m*m positive matrix, Dx(t)= Fx(t)+ Gw(t), the process noise */
# r_matrix_kf is a list that identifies the main diagonal of matrix: E[ v(t) v(t)^T ],
# size: p*p positive matrix, Z(t)= Hx(t)+ v(t), the measurement noise
no_states_kf 3
no_measurement_kf 1
q_matrix_kf ( 10.0 150.0 100000.0 )
r_matrix_kf ( 0.0000001 )
#####################
## TACTILE SENSORS ##
#####################
## length of the tactile sensor port
# noTactileSensors 192
## indices to read from the port for each finger
## starting index <uint> ending index <uint> contact threshold threshold multiplier contact feedback gain derivative threshold threshold multiplier gain derivative vibrotactile feedback
# l_thumb_finger_tactile_info ( 48 59 0.14 1.0 200.0 0.5 3.0 40.0)
# l_index_finger_tactile_info ( 0 11 0.14 1.0 200.0 0.5 3.0 40.0)
# l_middle_finger_tactile_info ( 12 23 0.14 1.0 200.0 0.5 3.0 40.0)
# l_ring_finger_tactile_info ( 24 35 0.14 1.0 200.0 0.5 3.0 40.0)
# l_little_finger_tactile_info ( 36 47 0.14 1.0 200.0 0.5 3.0 40.0)
# absolute vibrotactile feedback nonlinear function parameters
# 15.0 * std::log(2 * std::pow(x, 0.7) + 1) + 0.5 * std::pow(x, 1.1);
# reference to https://github.com/ami-iit/element_retargeting-from-human/issues/182#issuecomment-1000472012
# absoluteVibrotactileFeedbackNonlinearFunctionParameters ( 15.0 2.0 0.7 1.0 0.5 1.1 )
# percentage dedicated to absolute skin data for providing the vibrotactile feedback
# the value is between [0,1]
# 0 : 0% absolute skin value for the vibrotactile feedback; 100% derivative skin value for the vibrotactile feedback
# 1 : 100% absolute skin value for the vibrotactile feedback; 0% derivative skin value for the vibrotactile feedback
# absoluteSkinValuePercentage 1.0
# skinDerivativeSmoothingGain 1.0