25 #include <utils/system/argparser.h>
26 #include <blackboard/remote.h>
27 #include <interfaces/NaoJointPositionInterface.h>
28 #include <interfaces/NaoJointStiffnessInterface.h>
29 #include <interfaces/NaoSensorInterface.h>
30 #include <interfaces/HumanoidMotionInterface.h>
31 #include <interfaces/NavigatorInterface.h>
32 #include <interfaces/SpeechSynthInterface.h>
33 #include <interfaces/LedInterface.h>
34 #include <interfaces/SwitchInterface.h>
35 #include <netcomm/fawkes/client.h>
37 #include <gui_utils/service_chooser_dialog.h>
38 #include <gui_utils/interface_dispatcher.h>
45 #include <gtkmm/clipboard.h>
47 using namespace fawkes;
62 const Glib::RefPtr<Gtk::Builder> &builder)
63 : Gtk::Window(cobject)
70 hummot_naoqi_if = NULL;
71 hummot_fawkes_if = NULL;
72 speechsynth_if = NULL;
73 servo_enabled =
false;
77 builder->get_widget(
"frm_servos", frm_servos);
78 builder->get_widget(
"frm_sensors", frm_sensors);
79 builder->get_widget(
"frm_ultrasonic", frm_ultrasonic);
81 builder->get_widget(
"lab_HeadYaw", lab_HeadYaw);
82 builder->get_widget(
"lab_HeadPitch", lab_HeadPitch);
83 builder->get_widget(
"lab_RShoulderPitch", lab_RShoulderPitch);
84 builder->get_widget(
"lab_RShoulderRoll", lab_RShoulderRoll);
85 builder->get_widget(
"lab_LShoulderPitch", lab_LShoulderPitch);
86 builder->get_widget(
"lab_LShoulderRoll", lab_LShoulderRoll);
87 builder->get_widget(
"lab_LElbowYaw", lab_LElbowYaw);
88 builder->get_widget(
"lab_LElbowRoll", lab_LElbowRoll);
89 builder->get_widget(
"lab_LWristYaw", lab_LWristYaw);
90 builder->get_widget(
"lab_LHand", lab_LHand);
91 builder->get_widget(
"lab_RElbowYaw", lab_RElbowYaw);
92 builder->get_widget(
"lab_RElbowRoll", lab_RElbowRoll);
93 builder->get_widget(
"lab_RWristYaw", lab_RWristYaw);
94 builder->get_widget(
"lab_RHand", lab_RHand);
95 builder->get_widget(
"lab_RHipYawPitch", lab_RHipYawPitch);
96 builder->get_widget(
"lab_RHipPitch", lab_RHipPitch);
97 builder->get_widget(
"lab_RHipRoll", lab_RHipRoll);
98 builder->get_widget(
"lab_RKneePitch", lab_RKneePitch);
99 builder->get_widget(
"lab_RAnklePitch", lab_RAnklePitch);
100 builder->get_widget(
"lab_RAnkleRoll", lab_RAnkleRoll);
101 builder->get_widget(
"lab_LHipYawPitch", lab_LHipYawPitch);
102 builder->get_widget(
"lab_LHipPitch", lab_LHipPitch);
103 builder->get_widget(
"lab_LHipRoll", lab_LHipRoll);
104 builder->get_widget(
"lab_LKneePitch", lab_LKneePitch);
105 builder->get_widget(
"lab_LAnklePitch", lab_LAnklePitch);
106 builder->get_widget(
"lab_LAnkleRoll", lab_LAnkleRoll);
107 builder->get_widget(
"lab_stiff_HeadYaw", lab_stiff_HeadYaw);
108 builder->get_widget(
"lab_stiff_HeadPitch", lab_stiff_HeadPitch);
109 builder->get_widget(
"lab_stiff_RShoulderPitch", lab_stiff_RShoulderPitch);
110 builder->get_widget(
"lab_stiff_RShoulderRoll", lab_stiff_RShoulderRoll);
111 builder->get_widget(
"lab_stiff_LShoulderPitch", lab_stiff_LShoulderPitch);
112 builder->get_widget(
"lab_stiff_LShoulderRoll", lab_stiff_LShoulderRoll);
113 builder->get_widget(
"lab_stiff_LElbowYaw", lab_stiff_LElbowYaw);
114 builder->get_widget(
"lab_stiff_LElbowRoll", lab_stiff_LElbowRoll);
115 builder->get_widget(
"lab_stiff_LWristYaw", lab_stiff_LWristYaw);
116 builder->get_widget(
"lab_stiff_LHand", lab_stiff_LHand);
117 builder->get_widget(
"lab_stiff_RElbowYaw", lab_stiff_RElbowYaw);
118 builder->get_widget(
"lab_stiff_RElbowRoll", lab_stiff_RElbowRoll);
119 builder->get_widget(
"lab_stiff_RWristYaw", lab_stiff_RWristYaw);
120 builder->get_widget(
"lab_stiff_RHand", lab_stiff_RHand);
121 builder->get_widget(
"lab_stiff_RHipYawPitch", lab_stiff_RHipYawPitch);
122 builder->get_widget(
"lab_stiff_RHipPitch", lab_stiff_RHipPitch);
123 builder->get_widget(
"lab_stiff_RHipRoll", lab_stiff_RHipRoll);
124 builder->get_widget(
"lab_stiff_RKneePitch", lab_stiff_RKneePitch);
125 builder->get_widget(
"lab_stiff_RAnklePitch", lab_stiff_RAnklePitch);
126 builder->get_widget(
"lab_stiff_RAnkleRoll", lab_stiff_RAnkleRoll);
127 builder->get_widget(
"lab_stiff_LHipYawPitch", lab_stiff_LHipYawPitch);
128 builder->get_widget(
"lab_stiff_LHipPitch", lab_stiff_LHipPitch);
129 builder->get_widget(
"lab_stiff_LHipRoll", lab_stiff_LHipRoll);
130 builder->get_widget(
"lab_stiff_LKneePitch", lab_stiff_LKneePitch);
131 builder->get_widget(
"lab_stiff_LAnklePitch", lab_stiff_LAnklePitch);
132 builder->get_widget(
"lab_stiff_LAnkleRoll", lab_stiff_LAnkleRoll);
133 builder->get_widget(
"hsc_HeadYaw", hsc_HeadYaw);
134 builder->get_widget(
"hsc_HeadPitch", hsc_HeadPitch);
135 builder->get_widget(
"hsc_RShoulderPitch", hsc_RShoulderPitch);
136 builder->get_widget(
"hsc_RShoulderRoll", hsc_RShoulderRoll);
137 builder->get_widget(
"hsc_RElbowYaw", hsc_RElbowYaw);
138 builder->get_widget(
"hsc_RElbowRoll", hsc_RElbowRoll);
139 builder->get_widget(
"hsc_RWristYaw", hsc_RWristYaw);
140 builder->get_widget(
"hsc_RHand", hsc_RHand);
141 builder->get_widget(
"hsc_LShoulderPitch", hsc_LShoulderPitch);
142 builder->get_widget(
"hsc_LShoulderRoll", hsc_LShoulderRoll);
143 builder->get_widget(
"hsc_LElbowYaw", hsc_LElbowYaw);
144 builder->get_widget(
"hsc_LElbowRoll", hsc_LElbowRoll);
145 builder->get_widget(
"hsc_LWristYaw", hsc_LWristYaw);
146 builder->get_widget(
"hsc_LHand", hsc_LHand);
147 builder->get_widget(
"hsc_RHipYawPitch", hsc_RHipYawPitch);
148 builder->get_widget(
"hsc_RHipPitch", hsc_RHipPitch);
149 builder->get_widget(
"hsc_RHipRoll", hsc_RHipRoll);
150 builder->get_widget(
"hsc_RKneePitch", hsc_RKneePitch);
151 builder->get_widget(
"hsc_RAnklePitch", hsc_RAnklePitch);
152 builder->get_widget(
"hsc_RAnkleRoll", hsc_RAnkleRoll);
153 builder->get_widget(
"hsc_LHipYawPitch", hsc_LHipYawPitch);
154 builder->get_widget(
"hsc_LHipPitch", hsc_LHipPitch);
155 builder->get_widget(
"hsc_LHipRoll", hsc_LHipRoll);
156 builder->get_widget(
"hsc_LKneePitch", hsc_LKneePitch);
157 builder->get_widget(
"hsc_LAnklePitch", hsc_LAnklePitch);
158 builder->get_widget(
"hsc_LAnkleRoll", hsc_LAnkleRoll);
159 builder->get_widget(
"hsc_speed", hsc_speed);
160 builder->get_widget(
"lab_speed", lab_speed);
161 builder->get_widget(
"tb_connection", tb_connection);
162 builder->get_widget(
"tb_stiffness", tb_stiffness);
163 builder->get_widget(
"tb_control", tb_control);
164 builder->get_widget(
"tb_getup", tb_getup);
165 builder->get_widget(
"tb_parkpos", tb_parkpos);
166 builder->get_widget(
"tb_zeroall", tb_zeroall);
167 builder->get_widget(
"tb_exit", tb_exit);
168 builder->get_widget(
"lab_l_fsr_fl", lab_l_fsr_fl);
169 builder->get_widget(
"lab_l_fsr_fr", lab_l_fsr_fr);
170 builder->get_widget(
"lab_l_fsr_rl", lab_l_fsr_rl);
171 builder->get_widget(
"lab_l_fsr_rr", lab_l_fsr_rr);
172 builder->get_widget(
"lab_r_fsr_fl", lab_r_fsr_fl);
173 builder->get_widget(
"lab_r_fsr_fr", lab_r_fsr_fr);
174 builder->get_widget(
"lab_r_fsr_rl", lab_r_fsr_rl);
175 builder->get_widget(
"lab_r_fsr_rr", lab_r_fsr_rr);
176 builder->get_widget(
"lab_l_cop", lab_l_cop);
177 builder->get_widget(
"lab_r_cop", lab_r_cop);
178 builder->get_widget(
"lab_l_total_weight", lab_l_total_weight);
179 builder->get_widget(
"lab_r_total_weight", lab_r_total_weight);
180 builder->get_widget(
"lab_chest_button", lab_chest_button);
181 builder->get_widget(
"lab_touch_front", lab_touch_front);
182 builder->get_widget(
"lab_touch_middle", lab_touch_middle);
183 builder->get_widget(
"lab_touch_rear", lab_touch_rear);
184 builder->get_widget(
"lab_l_bumper_l", lab_l_bumper_l);
185 builder->get_widget(
"lab_l_bumper_r", lab_l_bumper_r);
186 builder->get_widget(
"lab_r_bumper_l", lab_r_bumper_l);
187 builder->get_widget(
"lab_r_bumper_r", lab_r_bumper_r);
188 builder->get_widget(
"lab_accel_x", lab_accel_x);
189 builder->get_widget(
"lab_accel_y", lab_accel_y);
190 builder->get_widget(
"lab_accel_z", lab_accel_z);
191 builder->get_widget(
"lab_gyro_x", lab_gyro_x);
192 builder->get_widget(
"lab_gyro_y", lab_gyro_y);
193 builder->get_widget(
"lab_gyro_ref", lab_gyro_ref);
194 builder->get_widget(
"lab_angles_xy", lab_angles_xy);
195 builder->get_widget(
"lab_ultrasonic_direction", lab_ultrasonic_direction);
196 builder->get_widget(
"lab_ultrasonic_left0", lab_ultrasonic_left0);
197 builder->get_widget(
"lab_ultrasonic_left1", lab_ultrasonic_left1);
198 builder->get_widget(
"lab_ultrasonic_left2", lab_ultrasonic_left2);
199 builder->get_widget(
"lab_ultrasonic_left3", lab_ultrasonic_left3);
200 builder->get_widget(
"lab_ultrasonic_right0", lab_ultrasonic_right0);
201 builder->get_widget(
"lab_ultrasonic_right1", lab_ultrasonic_right1);
202 builder->get_widget(
"lab_ultrasonic_right2", lab_ultrasonic_right2);
203 builder->get_widget(
"lab_ultrasonic_right3", lab_ultrasonic_right3);
204 builder->get_widget(
"lab_battery_charge", lab_battery_charge);
205 builder->get_widget(
"but_sv_copy", but_sv_copy);
206 builder->get_widget(
"cmb_us_direction", cmb_us_direction);
207 builder->get_widget(
"but_us_emit", but_us_emit);
208 builder->get_widget(
"but_us_auto", but_us_auto);
209 builder->get_widget(
"but_stop", but_stop);
210 builder->get_widget(
"but_ws_exec", but_ws_exec);
211 builder->get_widget(
"ent_ws_distance", ent_ws_distance);
212 builder->get_widget(
"but_wsw_exec", but_wsw_exec);
213 builder->get_widget(
"ent_wsw_distance", ent_wsw_distance);
214 builder->get_widget(
"but_wa_exec", but_wa_exec);
215 builder->get_widget(
"ent_wa_angle", ent_wa_angle);
216 builder->get_widget(
"ent_wa_radius", ent_wa_radius);
217 builder->get_widget(
"but_turn_exec", but_turn_exec);
218 builder->get_widget(
"cmb_kick_leg", cmb_kick_leg);
219 builder->get_widget(
"ent_kick_strength", ent_kick_strength);
220 builder->get_widget(
"but_kick_exec", but_kick_exec);
221 builder->get_widget(
"cmb_standup_from", cmb_standup_from);
222 builder->get_widget(
"but_standup_exec", but_standup_exec);
223 builder->get_widget(
"ent_turn_angle", ent_turn_angle);
224 builder->get_widget(
"rad_motion_fawkes", rad_motion_fawkes);
225 builder->get_widget(
"rad_motion_naoqi", rad_motion_naoqi);
226 builder->get_widget(
"ent_walkvel_x", ent_walkvel_x);
227 builder->get_widget(
"ent_walkvel_y", ent_walkvel_y);
228 builder->get_widget(
"ent_walkvel_theta", ent_walkvel_theta);
229 builder->get_widget(
"ent_walkvel_speed", ent_walkvel_speed);
230 builder->get_widget(
"but_walkvel_exec", but_walkvel_exec);
232 builder->get_widget(
"but_stiffness_read", but_stiffness_read);
233 builder->get_widget(
"but_stiffness_write", but_stiffness_write);
234 builder->get_widget(
"chb_stiffness_global", chb_stiffness_global);
235 builder->get_widget(
"spb_stiffness_global", spb_stiffness_global);
236 builder->get_widget(
"spb_HeadYaw", spb_HeadYaw);
237 builder->get_widget(
"spb_HeadPitch", spb_HeadPitch);
238 builder->get_widget(
"spb_RShoulderPitch", spb_RShoulderPitch);
239 builder->get_widget(
"spb_RShoulderRoll", spb_RShoulderRoll);
240 builder->get_widget(
"spb_RElbowYaw", spb_RElbowYaw);
241 builder->get_widget(
"spb_RElbowRoll", spb_RElbowRoll);
242 builder->get_widget(
"spb_RWristYaw", spb_RWristYaw);
243 builder->get_widget(
"spb_RHand", spb_RHand);
244 builder->get_widget(
"spb_LShoulderPitch", spb_LShoulderPitch);
245 builder->get_widget(
"spb_LShoulderRoll", spb_LShoulderRoll);
246 builder->get_widget(
"spb_LElbowYaw", spb_LElbowYaw);
247 builder->get_widget(
"spb_LElbowRoll", spb_LElbowRoll);
248 builder->get_widget(
"spb_LWristYaw", spb_LWristYaw);
249 builder->get_widget(
"spb_LHand", spb_LHand);
250 builder->get_widget(
"spb_RHipYawPitch", spb_RHipYawPitch);
251 builder->get_widget(
"spb_RHipPitch", spb_RHipPitch);
252 builder->get_widget(
"spb_RHipRoll", spb_RHipRoll);
253 builder->get_widget(
"spb_RKneePitch", spb_RKneePitch);
254 builder->get_widget(
"spb_RAnklePitch", spb_RAnklePitch);
255 builder->get_widget(
"spb_RAnkleRoll", spb_RAnkleRoll);
256 builder->get_widget(
"spb_LHipYawPitch", spb_LHipYawPitch);
257 builder->get_widget(
"spb_LHipPitch", spb_LHipPitch);
258 builder->get_widget(
"spb_LHipRoll", spb_LHipRoll);
259 builder->get_widget(
"spb_LKneePitch", spb_LKneePitch);
260 builder->get_widget(
"spb_LAnklePitch", spb_LAnklePitch);
261 builder->get_widget(
"spb_LAnkleRoll", spb_LAnkleRoll);
263 builder->get_widget(
"ent_nav_x", ent_nav_x);
264 builder->get_widget(
"ent_nav_y", ent_nav_y);
265 builder->get_widget(
"ent_nav_ori", ent_nav_ori);
266 builder->get_widget(
"but_nav_exec", but_nav_exec);
268 builder->get_widget(
"ent_tts", ent_tts);
269 builder->get_widget(
"but_tts_exec", but_tts_exec);
270 builder->get_widget(
"lab_tts_active", lab_tts_active);
272 builder->get_widget(
"scl_chest_r", scl_chest_r);
273 builder->get_widget(
"scl_chest_g", scl_chest_g);
274 builder->get_widget(
"scl_chest_b", scl_chest_b);
275 builder->get_widget(
"scl_left_eye_r", scl_left_eye_r);
276 builder->get_widget(
"scl_left_eye_g", scl_left_eye_g);
277 builder->get_widget(
"scl_left_eye_b", scl_left_eye_b);
278 builder->get_widget(
"scl_right_eye_r", scl_right_eye_r);
279 builder->get_widget(
"scl_right_eye_g", scl_right_eye_g);
280 builder->get_widget(
"scl_right_eye_b", scl_right_eye_b);
281 builder->get_widget(
"scl_left_foot_r", scl_left_foot_r);
282 builder->get_widget(
"scl_left_foot_g", scl_left_foot_g);
283 builder->get_widget(
"scl_left_foot_b", scl_left_foot_b);
284 builder->get_widget(
"scl_right_foot_r", scl_right_foot_r);
285 builder->get_widget(
"scl_right_foot_g", scl_right_foot_g);
286 builder->get_widget(
"scl_right_foot_b", scl_right_foot_b);
288 builder->get_widget(
"tb_left_ear_0", tb_left_ear_0);
289 builder->get_widget(
"tb_left_ear_36", tb_left_ear_36);
290 builder->get_widget(
"tb_left_ear_72", tb_left_ear_72);
291 builder->get_widget(
"tb_left_ear_108", tb_left_ear_108);
292 builder->get_widget(
"tb_left_ear_144", tb_left_ear_144);
293 builder->get_widget(
"tb_left_ear_180", tb_left_ear_180);
294 builder->get_widget(
"tb_left_ear_216", tb_left_ear_216);
295 builder->get_widget(
"tb_left_ear_252", tb_left_ear_252);
296 builder->get_widget(
"tb_left_ear_288", tb_left_ear_288);
297 builder->get_widget(
"tb_left_ear_324", tb_left_ear_324);
299 builder->get_widget(
"tb_right_ear_0", tb_right_ear_0);
300 builder->get_widget(
"tb_right_ear_36", tb_right_ear_36);
301 builder->get_widget(
"tb_right_ear_72", tb_right_ear_72);
302 builder->get_widget(
"tb_right_ear_108", tb_right_ear_108);
303 builder->get_widget(
"tb_right_ear_144", tb_right_ear_144);
304 builder->get_widget(
"tb_right_ear_180", tb_right_ear_180);
305 builder->get_widget(
"tb_right_ear_216", tb_right_ear_216);
306 builder->get_widget(
"tb_right_ear_252", tb_right_ear_252);
307 builder->get_widget(
"tb_right_ear_288", tb_right_ear_288);
308 builder->get_widget(
"tb_right_ear_324", tb_right_ear_324);
310 builder->get_widget(
"tb_control_leds", tb_control_leds);
313 led_scales[
"ChestBoard/Red"] = scl_chest_r;
314 led_scales[
"ChestBoard/Green"] = scl_chest_g;
315 led_scales[
"ChestBoard/Blue"] = scl_chest_b;
316 led_scales[
"Face/Red/Left"] = scl_left_eye_r;
317 led_scales[
"Face/Green/Left"] = scl_left_eye_g;
318 led_scales[
"Face/Blue/Left"] = scl_left_eye_b;
319 led_scales[
"Face/Red/Right"] = scl_right_eye_r;
320 led_scales[
"Face/Green/Right"] = scl_right_eye_g;
321 led_scales[
"Face/Blue/Right"] = scl_right_eye_b;
322 led_scales[
"LFoot/Red"] = scl_left_foot_r;
323 led_scales[
"LFoot/Green"] = scl_left_foot_g;
324 led_scales[
"LFoot/Blue"] = scl_left_foot_b;
325 led_scales[
"RFoot/Red"] = scl_right_foot_r;
326 led_scales[
"RFoot/Green"] = scl_right_foot_g;
327 led_scales[
"RFoot/Blue"] = scl_right_foot_b;
329 led_buttons[
"Ears/Left/0Deg"] = tb_left_ear_0;
330 led_buttons[
"Ears/Left/36Deg"] = tb_left_ear_36;
331 led_buttons[
"Ears/Left/72Deg"] = tb_left_ear_72;
332 led_buttons[
"Ears/Left/108Deg"] = tb_left_ear_108;
333 led_buttons[
"Ears/Left/144Deg"] = tb_left_ear_144;
334 led_buttons[
"Ears/Left/180Deg"] = tb_left_ear_180;
335 led_buttons[
"Ears/Left/216Deg"] = tb_left_ear_216;
336 led_buttons[
"Ears/Left/252Deg"] = tb_left_ear_252;
337 led_buttons[
"Ears/Left/288Deg"] = tb_left_ear_288;
338 led_buttons[
"Ears/Left/324Deg"] = tb_left_ear_324;
340 led_buttons[
"Ears/Right/0Deg"] = tb_right_ear_0;
341 led_buttons[
"Ears/Right/36Deg"] = tb_right_ear_36;
342 led_buttons[
"Ears/Right/72Deg"] = tb_right_ear_72;
343 led_buttons[
"Ears/Right/108Deg"] = tb_right_ear_108;
344 led_buttons[
"Ears/Right/144Deg"] = tb_right_ear_144;
345 led_buttons[
"Ears/Right/180Deg"] = tb_right_ear_180;
346 led_buttons[
"Ears/Right/216Deg"] = tb_right_ear_216;
347 led_buttons[
"Ears/Right/252Deg"] = tb_right_ear_252;
348 led_buttons[
"Ears/Right/288Deg"] = tb_right_ear_288;
349 led_buttons[
"Ears/Right/324Deg"] = tb_right_ear_324;
352 builder->get_widget(
"but_chestbut", but_chestbut);
353 builder->get_widget(
"but_head_front", but_head_front);
354 builder->get_widget(
"but_head_middle", but_head_middle);
355 builder->get_widget(
"but_head_rear", but_head_rear);
356 builder->get_widget(
"but_lfoot_bumper", but_lfoot_bumper);
357 builder->get_widget(
"but_rfoot_bumper", but_rfoot_bumper);
359 std::map<std::string, std::string> widget_if_map;
360 widget_if_map[
"Chest"] =
"chestbut";
361 widget_if_map[
"Foot Left"] =
"lfoot_bumper";
362 widget_if_map[
"Foot Right"] =
"rfoot_bumper";
363 widget_if_map[
"Head Front"] =
"head_front";
364 widget_if_map[
"Head Middle"] =
"head_middle";
365 widget_if_map[
"Head Rear"] =
"head_rear";
367 std::map<std::string, std::string>::iterator m;
368 for (m = widget_if_map.begin(); m != widget_if_map.end(); ++m) {
369 ButtonLabelSet labels;
371 builder->get_widget(
"lab_enabled_" + m->second, labels.lab_enabled);
372 builder->get_widget(
"lab_history_" + m->second, labels.lab_history);
373 builder->get_widget(
"lab_value_" + m->second, labels.lab_value);
374 builder->get_widget(
"lab_short_" + m->second, labels.lab_short);
375 builder->get_widget(
"lab_long_" + m->second, labels.lab_long);
376 builder->get_widget(
"lab_total_" + m->second, labels.lab_total);
378 button_labels[m->first] = labels;
381 cmb_kick_leg->set_active(0);
382 cmb_standup_from->set_active(0);
383 cmb_us_direction->set_active(0);
384 frm_servos->set_sensitive(
false);
385 frm_sensors->set_sensitive(
false);
386 frm_ultrasonic->set_sensitive(
false);
388 hsc_HeadYaw->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_slider_changed), hsc_HeadYaw, lab_HeadYaw, NaoJointPositionInterface::SERVO_head_yaw));
389 hsc_HeadPitch->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_slider_changed), hsc_HeadPitch, lab_HeadPitch, NaoJointPositionInterface::SERVO_head_pitch));
390 hsc_RShoulderPitch->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_slider_changed), hsc_RShoulderPitch, lab_RShoulderPitch, NaoJointPositionInterface::SERVO_r_shoulder_pitch));
391 hsc_RShoulderRoll->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_slider_changed), hsc_RShoulderRoll, lab_RShoulderRoll, NaoJointPositionInterface::SERVO_r_shoulder_roll));
392 hsc_RElbowYaw->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_slider_changed), hsc_RElbowYaw, lab_RElbowYaw, NaoJointPositionInterface::SERVO_r_elbow_yaw));
393 hsc_RElbowRoll->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_slider_changed), hsc_RElbowRoll, lab_RElbowRoll, NaoJointPositionInterface::SERVO_r_elbow_roll));
394 hsc_RWristYaw->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_slider_changed), hsc_RWristYaw, lab_RWristYaw, NaoJointPositionInterface::SERVO_r_wrist_yaw));
395 hsc_RHand->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_slider_changed), hsc_RHand, lab_RHand, NaoJointPositionInterface::SERVO_r_hand));
396 hsc_LShoulderPitch->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_slider_changed), hsc_LShoulderPitch, lab_LShoulderPitch, NaoJointPositionInterface::SERVO_l_shoulder_pitch));
397 hsc_LShoulderRoll->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_slider_changed), hsc_LShoulderRoll, lab_LShoulderRoll, NaoJointPositionInterface::SERVO_l_shoulder_roll));
398 hsc_LElbowYaw->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_slider_changed), hsc_LElbowYaw, lab_LElbowYaw, NaoJointPositionInterface::SERVO_l_elbow_yaw));
399 hsc_LElbowRoll->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_slider_changed), hsc_LElbowRoll, lab_LElbowRoll, NaoJointPositionInterface::SERVO_l_elbow_roll));
400 hsc_LWristYaw->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_slider_changed), hsc_LWristYaw, lab_LWristYaw, NaoJointPositionInterface::SERVO_r_wrist_yaw));
401 hsc_LHand->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_slider_changed), hsc_LHand, lab_LHand, NaoJointPositionInterface::SERVO_r_hand));
402 hsc_RHipYawPitch->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_slider_changed), hsc_RHipYawPitch, lab_RHipYawPitch, NaoJointPositionInterface::SERVO_r_hip_yaw_pitch));
403 hsc_RHipPitch->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_slider_changed), hsc_RHipPitch, lab_RHipPitch, NaoJointPositionInterface::SERVO_r_hip_pitch));
404 hsc_RHipRoll->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_slider_changed), hsc_RHipRoll, lab_RHipRoll, NaoJointPositionInterface::SERVO_r_hip_roll));
405 hsc_RKneePitch->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_slider_changed), hsc_RKneePitch, lab_RKneePitch, NaoJointPositionInterface::SERVO_r_knee_pitch));
406 hsc_RAnklePitch->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_slider_changed), hsc_RAnklePitch, lab_RAnklePitch, NaoJointPositionInterface::SERVO_r_ankle_pitch));
407 hsc_RAnkleRoll->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_slider_changed), hsc_RAnkleRoll, lab_RAnkleRoll, NaoJointPositionInterface::SERVO_r_ankle_roll));
408 hsc_LHipYawPitch->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_slider_changed), hsc_LHipYawPitch, lab_LHipYawPitch, NaoJointPositionInterface::SERVO_l_hip_yaw_pitch));
409 hsc_LHipPitch->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_slider_changed), hsc_LHipPitch, lab_LHipPitch, NaoJointPositionInterface::SERVO_l_hip_pitch));
410 hsc_LHipRoll->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_slider_changed), hsc_LHipRoll, lab_LHipRoll, NaoJointPositionInterface::SERVO_l_hip_roll));
411 hsc_LKneePitch->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_slider_changed), hsc_LKneePitch, lab_LKneePitch, NaoJointPositionInterface::SERVO_l_knee_pitch));
412 hsc_LAnklePitch->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_slider_changed), hsc_LAnklePitch, lab_LAnklePitch, NaoJointPositionInterface::SERVO_l_ankle_pitch));
413 hsc_LAnkleRoll->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_slider_changed), hsc_LAnkleRoll, lab_LAnkleRoll, NaoJointPositionInterface::SERVO_l_ankle_roll));
414 hsc_speed->signal_value_changed().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_changed_speed));
415 tb_connection->signal_clicked().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_connection_clicked));
416 tb_stiffness->signal_clicked().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_stiffness_clicked));
417 tb_control->signal_toggled().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_control_toggled));
418 tb_parkpos->signal_clicked().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_goto_parkpos_clicked));
419 tb_zeroall->signal_clicked().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_goto_zero_all_clicked));
420 tb_getup->signal_clicked().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_get_up_clicked));
421 tb_exit->signal_clicked().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_exit_clicked));
422 but_sv_copy->signal_clicked().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_sv_copy_clicked));
423 but_us_auto->signal_toggled().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_us_auto_toggled));
424 but_us_emit->signal_clicked().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_us_emit_clicked));
425 but_walkvel_exec->signal_clicked().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_walkvel_exec_clicked));
426 but_ws_exec->signal_clicked().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_ws_exec_clicked));
427 but_stop->signal_clicked().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_motion_stop_clicked));
428 but_wsw_exec->signal_clicked().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_wsw_exec_clicked));
429 but_wa_exec->signal_clicked().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_wa_exec_clicked));
430 but_kick_exec->signal_clicked().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_kick_exec_clicked));
431 but_standup_exec->signal_clicked().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_standup_exec_clicked));
432 but_turn_exec->signal_clicked().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_turn_exec_clicked));
433 but_nav_exec->signal_clicked().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_nav_exec_clicked));
434 but_stiffness_read->signal_clicked().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_stiffness_read_clicked));
435 but_stiffness_write->signal_clicked().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_stiffness_write_clicked));
436 chb_stiffness_global->signal_toggled().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_stiffness_global_toggled));
438 but_tts_exec->signal_clicked().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_tts_exec_clicked));
440 tb_left_ear_0->signal_toggled().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_tb_toggled),
"Ears/Left/0Deg", tb_left_ear_0));
441 tb_left_ear_36->signal_toggled().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_tb_toggled),
"Ears/Left/36Deg", tb_left_ear_36));
442 tb_left_ear_72->signal_toggled().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_tb_toggled),
"Ears/Left/72Deg", tb_left_ear_72));
443 tb_left_ear_108->signal_toggled().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_tb_toggled),
"Ears/Left/108Deg", tb_left_ear_108));
444 tb_left_ear_144->signal_toggled().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_tb_toggled),
"Ears/Left/144Deg", tb_left_ear_144));
445 tb_left_ear_180->signal_toggled().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_tb_toggled),
"Ears/Left/180Deg", tb_left_ear_180));
446 tb_left_ear_216->signal_toggled().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_tb_toggled),
"Ears/Left/216Deg", tb_left_ear_216));
447 tb_left_ear_252->signal_toggled().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_tb_toggled),
"Ears/Left/252Deg", tb_left_ear_252));
448 tb_left_ear_288->signal_toggled().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_tb_toggled),
"Ears/Left/288Deg", tb_left_ear_288));
449 tb_left_ear_324->signal_toggled().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_tb_toggled),
"Ears/Left/324Deg", tb_left_ear_324));
451 tb_right_ear_0->signal_toggled().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_tb_toggled),
"Ears/Right/0Deg", tb_right_ear_0));
452 tb_right_ear_36->signal_toggled().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_tb_toggled),
"Ears/Right/36Deg", tb_right_ear_36));
453 tb_right_ear_72->signal_toggled().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_tb_toggled),
"Ears/Right/72Deg", tb_right_ear_72));
454 tb_right_ear_108->signal_toggled().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_tb_toggled),
"Ears/Right/108Deg", tb_right_ear_108));
455 tb_right_ear_144->signal_toggled().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_tb_toggled),
"Ears/Right/144Deg", tb_right_ear_144));
456 tb_right_ear_180->signal_toggled().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_tb_toggled),
"Ears/Right/180Deg", tb_right_ear_180));
457 tb_right_ear_216->signal_toggled().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_tb_toggled),
"Ears/Right/216Deg", tb_right_ear_216));
458 tb_right_ear_252->signal_toggled().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_tb_toggled),
"Ears/Right/252Deg", tb_right_ear_252));
459 tb_right_ear_288->signal_toggled().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_tb_toggled),
"Ears/Right/288Deg", tb_right_ear_288));
460 tb_right_ear_324->signal_toggled().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_tb_toggled),
"Ears/Right/324Deg", tb_right_ear_324));
462 scl_chest_r->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_changed),
"ChestBoard/Red", scl_chest_r));
463 scl_chest_g->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_changed),
"ChestBoard/Green", scl_chest_g));
464 scl_chest_b->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_changed),
"ChestBoard/Blue", scl_chest_b));
465 scl_left_eye_r->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_changed),
"Face/Red/Left", scl_left_eye_r));
466 scl_left_eye_g->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_changed),
"Face/Green/Left", scl_left_eye_g));
467 scl_left_eye_b->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_changed),
"Face/Blue/Left", scl_left_eye_b));
468 scl_right_eye_r->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_changed),
"Face/Red/Right", scl_right_eye_r));
469 scl_right_eye_g->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_changed),
"Face/Green/Right", scl_right_eye_g));
470 scl_right_eye_b->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_changed),
"Face/Blue/Right", scl_right_eye_b));
471 scl_left_foot_r->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_changed),
"LFoot/Red", scl_left_foot_r));
472 scl_left_foot_g->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_changed),
"LFoot/Green", scl_left_foot_g));
473 scl_left_foot_b->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_changed),
"LFoot/Blue", scl_left_foot_b));
474 scl_right_foot_r->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_changed),
"RFoot/Red", scl_right_foot_r));
475 scl_right_foot_g->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_changed),
"RFoot/Green", scl_right_foot_g));
476 scl_right_foot_b->signal_value_changed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_changed),
"RFoot/Blue", scl_right_foot_b));
478 scl_chest_r->signal_button_release_event().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_button_release),
"ChestBoard/Red", scl_chest_r));
479 scl_chest_g->signal_button_release_event().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_button_release),
"ChestBoard/Green", scl_chest_g));
480 scl_chest_b->signal_button_release_event().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_button_release),
"ChestBoard/Blue", scl_chest_b));
481 scl_left_eye_r->signal_button_release_event().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_button_release),
"Face/Red/Left", scl_left_eye_r));
482 scl_left_eye_g->signal_button_release_event().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_button_release),
"Face/Green/Left", scl_left_eye_g));
483 scl_left_eye_b->signal_button_release_event().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_button_release),
"Face/Blue/Left", scl_left_eye_b));
484 scl_right_eye_r->signal_button_release_event().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_button_release),
"Face/Red/Right", scl_right_eye_r));
485 scl_right_eye_g->signal_button_release_event().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_button_release),
"Face/Green/Right", scl_right_eye_g));
486 scl_right_eye_b->signal_button_release_event().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_button_release),
"Face/Blue/Right", scl_right_eye_b));
487 scl_left_foot_r->signal_button_release_event().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_button_release),
"LFoot/Red", scl_left_foot_r));
488 scl_left_foot_g->signal_button_release_event().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_button_release),
"LFoot/Green", scl_left_foot_g));
489 scl_left_foot_b->signal_button_release_event().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_button_release),
"LFoot/Blue", scl_left_foot_b));
490 scl_right_foot_r->signal_button_release_event().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_button_release),
"RFoot/Red", scl_right_foot_r));
491 scl_right_foot_g->signal_button_release_event().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_button_release),
"RFoot/Green", scl_right_foot_g));
492 scl_right_foot_b->signal_button_release_event().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_slider_button_release),
"RFoot/Blue", scl_right_foot_b));
494 but_chestbut->signal_pressed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_button_click_pressed),
"Chest"));
495 but_chestbut->signal_released().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_button_click_released),
"Chest"));
496 but_head_front->signal_pressed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_button_click_pressed),
"Head Front"));
497 but_head_front->signal_released().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_button_click_released),
"Head Front"));
498 but_head_middle->signal_pressed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_button_click_pressed),
"Head Middle"));
499 but_head_middle->signal_released().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_button_click_released),
"Head Middle"));
500 but_head_rear->signal_pressed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_button_click_pressed),
"Head Rear"));
501 but_head_rear->signal_released().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_button_click_released),
"Head Rear"));
502 but_lfoot_bumper->signal_pressed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_button_click_pressed),
"Foot Left"));
503 but_lfoot_bumper->signal_released().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_button_click_released),
"Foot Left"));
504 but_rfoot_bumper->signal_pressed().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_button_click_pressed),
"Foot Right"));
505 but_rfoot_bumper->signal_released().connect(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_button_click_released),
"Foot Right"));
507 connection_dispatcher.
signal_connected().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_connect));
508 connection_dispatcher.
signal_disconnected().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_disconnect));
510 tb_control_leds->signal_toggled().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_control_leds_toggled));
512 on_control_toggled();
528 NaoGuiGtkWindow::init()
530 ent_walkvel_x->set_text(convert_float2str(0.5f, 1));
531 ent_walkvel_y->set_text(convert_float2str(0.f, 1));
532 ent_walkvel_theta->set_text(convert_float2str(0.f, 1));
533 ent_walkvel_speed->set_text(convert_float2str(0.5f, 1));
535 ent_ws_distance->set_text(convert_float2str(0.2f, 1));
537 ent_wsw_distance->set_text(convert_float2str(0.2f, 1));
539 ent_wa_angle->set_text(convert_float2str(1.f, 1));
540 ent_wa_radius->set_text(convert_float2str(0.3f, 1));
542 ent_turn_angle->set_text(convert_float2str(1.f, 1));
544 ent_nav_x->set_text(convert_float2str(0.f, 1));
545 ent_nav_y->set_text(convert_float2str(0.f, 1));
546 ent_nav_ori->set_text(convert_float2str(0.f, 1));
555 NaoGuiGtkWindow::update_servo_value(Gtk::HScale *hsc, Gtk::Label *label,
float value)
557 float f = roundf(value * 100.);
558 if ( ! tb_control->get_active() && (hsc->get_value() != f)) {
564 Glib::ustring fs = convert_float2str(value);
565 if (label->get_text() != fs) {
577 NaoGuiGtkWindow::update_sensor_value(Gtk::Label *label,
float value,
bool show_decimal)
579 Glib::ustring s = convert_float2str(value, show_decimal ? 2 : 0);
580 if (label->get_text() != s) {
592 NaoGuiGtkWindow::update_entry_value(Gtk::Entry *ent,
float value,
unsigned int width)
594 if ( value != -123456 ) {
595 ent->set_text(convert_float2str(value, width));
606 NaoGuiGtkWindow::update_ultrasonic_direction()
608 if ( ! sensor_if || ! sensor_if->
is_valid())
return;
611 case NaoSensorInterface::USD_LEFT_LEFT:
612 lab_ultrasonic_direction->set_text(
"l-l");
break;
613 case NaoSensorInterface::USD_LEFT_RIGHT:
614 lab_ultrasonic_direction->set_text(
"l-r");
break;
615 case NaoSensorInterface::USD_RIGHT_RIGHT:
616 lab_ultrasonic_direction->set_text(
"r-r");
break;
617 case NaoSensorInterface::USD_RIGHT_LEFT:
618 lab_ultrasonic_direction->set_text(
"r-l");
break;
619 case NaoSensorInterface::USD_BOTH_BOTH:
620 lab_ultrasonic_direction->set_text(
"b-b");
break;
622 lab_ultrasonic_direction->set_text(
"none");
break;
633 NaoGuiGtkWindow::send_servo_msg(Gtk::HScale *hsc,
unsigned int servo)
635 if ( jointpos_if && tb_control->get_active() ) {
638 if (servo == NaoJointPositionInterface::SERVO_head_pitch ||
639 servo == NaoJointPositionInterface::SERVO_head_yaw)
643 hsc_HeadPitch->get_value() /100.f,
644 hsc_speed->get_value() / 100.f);
646 if ( rad_motion_fawkes->get_active() ) {
655 hsc->get_value() / 100.f,
656 hsc_speed->get_value() /100.f);
670 NaoGuiGtkWindow::on_slider_changed(Gtk::HScale *hsc, Gtk::Label *label,
673 send_servo_msg(hsc, servo);
679 NaoGuiGtkWindow::on_changed_speed()
681 Glib::ustring s = convert_float2str(hsc_speed->get_value() / 100.f, 2);
682 lab_speed->set_text(s);
692 NaoGuiGtkWindow::update_jointpos_values(
bool force)
694 if ( ! jointpos_if )
return;
706 update_servo_value(hsc_HeadYaw, lab_HeadYaw, jointpos_if->
head_yaw());
707 update_servo_value(hsc_HeadPitch, lab_HeadPitch, jointpos_if->
head_pitch());
708 update_servo_value(hsc_RShoulderPitch, lab_RShoulderPitch, jointpos_if->
r_shoulder_pitch());
709 update_servo_value(hsc_RShoulderRoll, lab_RShoulderRoll, jointpos_if->
r_shoulder_roll());
710 update_servo_value(hsc_RElbowYaw, lab_RElbowYaw, jointpos_if->
r_elbow_yaw());
711 update_servo_value(hsc_RElbowRoll, lab_RElbowRoll, jointpos_if->
r_elbow_roll());
712 update_servo_value(hsc_RWristYaw, lab_RWristYaw, jointpos_if->
r_wrist_yaw());
713 update_servo_value(hsc_RHand, lab_RHand, jointpos_if->
r_hand());
714 update_servo_value(hsc_LShoulderPitch, lab_LShoulderPitch, jointpos_if->
l_shoulder_pitch());
715 update_servo_value(hsc_LShoulderRoll, lab_LShoulderRoll, jointpos_if->
l_shoulder_roll());
716 update_servo_value(hsc_LElbowYaw, lab_LElbowYaw, jointpos_if->
l_elbow_yaw());
717 update_servo_value(hsc_LElbowRoll, lab_LElbowRoll, jointpos_if->
l_elbow_roll());
718 update_servo_value(hsc_LWristYaw, lab_LWristYaw, jointpos_if->
l_wrist_yaw());
719 update_servo_value(hsc_LHand, lab_LHand, jointpos_if->
l_hand());
720 update_servo_value(hsc_RHipYawPitch, lab_RHipYawPitch, jointpos_if->
r_hip_yaw_pitch());
721 update_servo_value(hsc_RHipPitch, lab_RHipPitch, jointpos_if->
r_hip_pitch());
722 update_servo_value(hsc_RHipRoll, lab_RHipRoll, jointpos_if->
r_hip_roll());
723 update_servo_value(hsc_RKneePitch, lab_RKneePitch, jointpos_if->
r_knee_pitch());
724 update_servo_value(hsc_RAnklePitch, lab_RAnklePitch, jointpos_if->
r_ankle_pitch());
725 update_servo_value(hsc_RAnkleRoll, lab_RAnkleRoll, jointpos_if->
r_ankle_roll());
726 update_servo_value(hsc_LHipYawPitch, lab_LHipYawPitch, jointpos_if->
l_hip_yaw_pitch());
727 update_servo_value(hsc_LHipPitch, lab_LHipPitch, jointpos_if->
l_hip_pitch());
728 update_servo_value(hsc_LHipRoll, lab_LHipRoll, jointpos_if->
l_hip_roll());
729 update_servo_value(hsc_LKneePitch, lab_LKneePitch, jointpos_if->
l_knee_pitch());
730 update_servo_value(hsc_LAnklePitch, lab_LAnklePitch, jointpos_if->
l_ankle_pitch());
731 update_servo_value(hsc_LAnkleRoll, lab_LAnkleRoll, jointpos_if->
l_ankle_roll());
733 bool currently_servo_enabled = servos_enabled();
735 if ( currently_servo_enabled && ! servo_enabled ) {
736 tb_stiffness->set_stock_id(Gtk::Stock::YES);
737 tb_control->set_sensitive(
true);
738 tb_getup->set_sensitive(
true);
739 tb_parkpos->set_sensitive(
true);
740 tb_zeroall->set_sensitive(
true);
741 }
else if (! currently_servo_enabled && servo_enabled ) {
742 tb_stiffness->set_stock_id(Gtk::Stock::NO);
743 tb_control->set_sensitive(
false);
744 tb_getup->set_sensitive(
false);
745 tb_parkpos->set_sensitive(
false);
746 tb_zeroall->set_sensitive(
false);
748 servo_enabled = currently_servo_enabled;
756 NaoGuiGtkWindow::update_tts()
758 if ( ! speechsynth_if || ! speechsynth_if->
is_valid())
return;
760 speechsynth_if->
read();
761 if ((speechsynth_if->
is_final() || (speechsynth_if->
msgid() == 0)) &&
762 (lab_tts_active->get_text() !=
"No"))
764 lab_tts_active->set_text(
"No");
766 }
else if (! speechsynth_if->
is_final() &&
767 (speechsynth_if->
msgid() != 0) &&
768 (lab_tts_active->get_text() !=
"Yes"))
770 lab_tts_active->set_text(
"Yes");
781 NaoGuiGtkWindow::update_sensor_values(
bool force)
783 if ( ! sensor_if )
return;
788 update_sensor_value(lab_l_fsr_fl, sensor_if->
l_fsr_fl());
789 update_sensor_value(lab_l_fsr_fr, sensor_if->
l_fsr_fr());
790 update_sensor_value(lab_l_fsr_rl, sensor_if->
l_fsr_rl());
791 update_sensor_value(lab_l_fsr_rr, sensor_if->
l_fsr_rr());
792 update_sensor_value(lab_r_fsr_fl, sensor_if->
r_fsr_fl());
793 update_sensor_value(lab_r_fsr_fr, sensor_if->
r_fsr_fr());
794 update_sensor_value(lab_r_fsr_rl, sensor_if->
r_fsr_rl());
795 update_sensor_value(lab_r_fsr_rr, sensor_if->
r_fsr_rr());
796 update_sensor_value(lab_r_total_weight, sensor_if->
r_total_weight());
797 update_sensor_value(lab_l_total_weight, sensor_if->
l_total_weight());
799 update_sensor_value(lab_chest_button, sensor_if->
chest_button(),
false);
802 update_sensor_value(lab_touch_rear, sensor_if->
head_touch_rear(),
false);
803 update_sensor_value(lab_l_bumper_l, sensor_if->
l_foot_bumper_l(),
false);
804 update_sensor_value(lab_l_bumper_r, sensor_if->
l_foot_bumper_r(),
false);
805 update_sensor_value(lab_r_bumper_l, sensor_if->
r_foot_bumper_l(),
false);
806 update_sensor_value(lab_r_bumper_r, sensor_if->
r_foot_bumper_r(),
false);
808 update_sensor_value(lab_accel_x, sensor_if->
accel_x());
809 update_sensor_value(lab_accel_y, sensor_if->
accel_y());
810 update_sensor_value(lab_accel_z, sensor_if->
accel_z());
811 update_sensor_value(lab_gyro_x, sensor_if->
gyro_x());
812 update_sensor_value(lab_gyro_y, sensor_if->
gyro_y());
813 update_sensor_value(lab_gyro_ref, sensor_if->
gyro_ref());
815 update_sensor_value(lab_battery_charge, sensor_if->
battery_charge());
817 Glib::ustring l_cop =
818 "(" + convert_float2str(sensor_if->
l_cop_x(), 1) +
", " +
819 convert_float2str(sensor_if->
l_cop_y(), 1) +
")";
820 lab_l_cop->set_text(l_cop);
822 Glib::ustring r_cop =
823 "(" + convert_float2str(sensor_if->
r_cop_x(), 1) +
", " +
824 convert_float2str(sensor_if->
r_cop_y(), 1) +
")";
825 lab_r_cop->set_text(r_cop);
827 Glib::ustring angles_xy =
828 convert_float2str(sensor_if->
angle_x(), 2) +
"/" +
829 convert_float2str(sensor_if->
angle_y(), 2);
830 lab_angles_xy->set_text(angles_xy);
832 update_ultrasonic_direction();
848 NaoGuiGtkWindow::servos_enabled()
const
850 jointstiff_if->
read();
851 return (jointstiff_if->
minimum() > 0.);
856 NaoGuiGtkWindow::on_stiffness_clicked()
858 const float stiffness = servos_enabled() ? 0. : 1.;
867 NaoGuiGtkWindow::on_control_toggled()
869 bool sensitive = tb_control->get_active();
870 hsc_HeadYaw->set_sensitive(sensitive);
871 hsc_HeadPitch->set_sensitive(sensitive);
872 hsc_RShoulderPitch->set_sensitive(sensitive);
873 hsc_RShoulderRoll->set_sensitive(sensitive);
874 hsc_RElbowYaw->set_sensitive(sensitive);
875 hsc_RElbowRoll->set_sensitive(sensitive);
876 hsc_RWristYaw->set_sensitive(sensitive);
877 hsc_RHand->set_sensitive(sensitive);
878 hsc_LShoulderPitch->set_sensitive(sensitive);
879 hsc_LShoulderRoll->set_sensitive(sensitive);
880 hsc_LElbowYaw->set_sensitive(sensitive);
881 hsc_LElbowRoll->set_sensitive(sensitive);
882 hsc_LWristYaw->set_sensitive(sensitive);
883 hsc_LHand->set_sensitive(sensitive);
884 hsc_RHipYawPitch->set_sensitive(sensitive);
885 hsc_RHipPitch->set_sensitive(sensitive);
886 hsc_RHipRoll->set_sensitive(sensitive);
887 hsc_RKneePitch->set_sensitive(sensitive);
888 hsc_RAnklePitch->set_sensitive(sensitive);
889 hsc_RAnkleRoll->set_sensitive(sensitive);
890 hsc_LHipYawPitch->set_sensitive(sensitive);
891 hsc_LHipPitch->set_sensitive(sensitive);
892 hsc_LHipRoll->set_sensitive(sensitive);
893 hsc_LKneePitch->set_sensitive(sensitive);
894 hsc_LAnklePitch->set_sensitive(sensitive);
895 hsc_LAnkleRoll->set_sensitive(sensitive);
898 update_jointpos_values();
904 NaoGuiGtkWindow::on_sv_copy_clicked()
906 std::stringstream txt;
908 "head_yaw = " << (hsc_HeadYaw->get_value() / 100.f) <<
",\n" <<
909 "head_pitch = " << (hsc_HeadPitch->get_value() / 100.f) <<
",\n" <<
910 "l_shoulder_pitch = " << (hsc_LShoulderPitch->get_value() / 100.f) <<
",\n" <<
911 "l_shoulder_roll = " << (hsc_LShoulderRoll->get_value() / 100.f) <<
",\n" <<
912 "l_elbow_yaw = " << (hsc_LElbowYaw->get_value() / 100.f) <<
",\n" <<
913 "l_elbow_roll = " << (hsc_LElbowRoll->get_value() / 100.f) <<
",\n" <<
914 "l_wrist_yaw = " << (hsc_LWristYaw->get_value() / 100.f) <<
",\n" <<
915 "l_hand = " << (hsc_LHand->get_value() / 100.f) <<
",\n" <<
916 "r_shoulder_pitch = " << (hsc_RShoulderPitch->get_value() / 100.f) <<
",\n" <<
917 "r_shoulder_roll = " << (hsc_RShoulderRoll->get_value() / 100.f) <<
",\n" <<
918 "r_elbow_yaw = " << (hsc_RElbowYaw->get_value() / 100.f) <<
",\n" <<
919 "r_elbow_roll = " << (hsc_RElbowRoll->get_value() / 100.f) <<
",\n" <<
920 "r_wrist_yaw = " << (hsc_RWristYaw->get_value() / 100.f) <<
",\n" <<
921 "r_hand = " << (hsc_RHand->get_value() / 100.f) <<
",\n" <<
922 "l_hip_yaw_pitch = " << (hsc_LHipYawPitch->get_value() / 100.f) <<
",\n" <<
923 "l_hip_roll = " << (hsc_LHipRoll->get_value() / 100.f) <<
",\n" <<
924 "l_hip_pitch = " << (hsc_LHipPitch->get_value() / 100.f) <<
",\n" <<
925 "l_knee_pitch = " << (hsc_LKneePitch->get_value() / 100.f) <<
",\n" <<
926 "l_ankle_pitch = " << (hsc_LAnklePitch->get_value() / 100.f) <<
",\n" <<
927 "l_ankle_roll = " << (hsc_LAnkleRoll->get_value() / 100.f) <<
",\n" <<
928 "r_hip_yaw_pitch = " << (hsc_RHipYawPitch->get_value() / 100.f) <<
",\n" <<
929 "r_hip_roll = " << (hsc_RHipRoll->get_value() / 100.f) <<
",\n" <<
930 "r_hip_pitch = " << (hsc_RHipPitch->get_value() / 100.f) <<
",\n" <<
931 "r_knee_pitch = " << (hsc_RKneePitch->get_value() / 100.f) <<
",\n" <<
932 "r_ankle_pitch = " << (hsc_RAnklePitch->get_value() / 100.f) <<
",\n" <<
933 "r_ankle_roll = " << (hsc_RAnkleRoll->get_value() / 100.f);
934 Gtk::Clipboard::get()->set_text(txt.str());
939 string_to_usd(std::string &value)
941 if (value ==
"l-l") {
942 return NaoSensorInterface::USD_LEFT_LEFT;
943 }
else if (value ==
"l-r") {
944 return NaoSensorInterface::USD_LEFT_RIGHT;
945 }
else if (value ==
"r-l") {
946 return NaoSensorInterface::USD_RIGHT_LEFT;
947 }
else if (value ==
"r-r") {
948 return NaoSensorInterface::USD_RIGHT_RIGHT;
949 }
else if (value ==
"b-b") {
950 return NaoSensorInterface::USD_BOTH_BOTH;
952 return NaoSensorInterface::USD_NONE;
956 NaoGuiGtkWindow::on_us_emit_clicked()
959 cmb_us_direction->get_active()->get_value(0, value);
969 NaoGuiGtkWindow::on_us_auto_toggled()
971 if (but_us_auto->get_active()) {
973 cmb_us_direction->get_active()->get_value(0, value);
988 NaoGuiGtkWindow::on_connection_clicked()
1000 NaoGuiGtkWindow::on_connect()
1016 std::list<fawkes::Interface *> led_ifs_l =
1019 std::list<fawkes::Interface *>::iterator li = led_ifs_l.begin();
1020 while (li != led_ifs_l.end()) {
1021 std::string
id = (*li)->id();
1022 std::string::size_type last_space =
id.rfind(
" ");
1023 std::string device =
id.substr(last_space + 1);
1026 if (led_if == NULL) {
1028 li = led_ifs_l.erase(li);
1034 on_led_data_changed(led_if);
1035 led_ifs[device] = led_if;
1038 std::list<fawkes::Interface *> button_ifs_l =
1041 li = button_ifs_l.begin();
1042 while (li != button_ifs_l.end()) {
1043 std::string
id = (*li)->id();
1044 std::string::size_type start = std::string(
"Nao Button ").size();
1045 std::string device =
id.substr(start);
1048 if (switch_if == NULL) {
1050 li = button_ifs_l.erase(li);
1056 on_button_data_changed(switch_if);
1057 button_ifs[device] = switch_if;
1065 ifd_jointpos->
signal_data_changed().connect(sigc::hide(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::update_jointpos_values),
false)));
1066 ifd_sensor->
signal_data_changed().connect(sigc::hide(sigc::bind(sigc::mem_fun(*
this, &NaoGuiGtkWindow::update_sensor_values),
false)));
1067 ifd_tts->
signal_data_changed().connect(sigc::hide(sigc::mem_fun(*
this, &NaoGuiGtkWindow::update_tts)));
1068 ifd_leds->
signal_data_changed().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_led_data_changed));
1069 ifd_buttons->
signal_data_changed().connect(sigc::mem_fun(*
this, &NaoGuiGtkWindow::on_button_data_changed));
1076 tb_connection->set_stock_id(Gtk::Stock::DISCONNECT);
1078 frm_servos->set_sensitive(
true);
1079 frm_sensors->set_sensitive(
true);
1080 frm_ultrasonic->set_sensitive(
true);
1081 tb_stiffness->set_sensitive(
true);
1082 but_us_auto->set_sensitive(
true);
1083 but_us_emit->set_sensitive(
true);
1084 cmb_us_direction->set_sensitive(
true);
1088 Glib::ustring message = *(e.
begin());
1089 Gtk::MessageDialog md(*
this, message,
false,
1090 Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK,
1092 md.set_title(
"BlackBoard connection failed");
1100 bb->
close(jointpos_if);
1101 bb->
close(jointstiff_if);
1102 bb->
close(sensor_if);
1103 bb->
close(nao_navi_if);
1104 bb->
close(hummot_fawkes_if);
1105 bb->
close(hummot_naoqi_if);
1106 bb->
close(speechsynth_if);
1107 delete ifd_jointpos;
1113 jointstiff_if = NULL;
1116 hummot_fawkes_if = NULL;
1117 hummot_naoqi_if = NULL;
1118 speechsynth_if = NULL;
1120 ifd_jointpos = NULL;
1132 NaoGuiGtkWindow::on_disconnect()
1134 if (tb_control->get_active()) tb_control->set_active(
false);
1135 frm_servos->set_sensitive(
false);
1136 frm_sensors->set_sensitive(
false);
1137 frm_ultrasonic->set_sensitive(
false);
1138 tb_stiffness->set_sensitive(
false);
1139 tb_control->set_sensitive(
false);
1140 tb_getup->set_sensitive(
false);
1141 tb_parkpos->set_sensitive(
false);
1142 tb_zeroall->set_sensitive(
false);
1143 but_us_auto->set_sensitive(
false);
1144 but_us_emit->set_sensitive(
false);
1145 cmb_us_direction->set_sensitive(
false);
1153 bb->
close(jointpos_if);
1154 bb->
close(jointstiff_if);
1155 bb->
close(sensor_if);
1156 bb->
close(nao_navi_if);
1157 bb->
close(hummot_fawkes_if);
1158 bb->
close(hummot_naoqi_if);
1159 bb->
close(speechsynth_if);
1161 std::map<std::string, fawkes::LedInterface *>::iterator li;
1162 for (li = led_ifs.begin(); li != led_ifs.end(); ++li) {
1163 bb->
close(li->second);
1167 std::map<std::string, fawkes::SwitchInterface *>::iterator si;
1168 for (si = button_ifs.begin(); si != button_ifs.end(); ++si) {
1169 bb->
close(si->second);
1173 delete ifd_jointpos;
1180 jointstiff_if = NULL;
1183 hummot_fawkes_if = NULL;
1184 hummot_naoqi_if = NULL;
1185 speechsynth_if = NULL;
1187 ifd_jointpos = NULL;
1194 tb_connection->set_stock_id(Gtk::Stock::CONNECT);
1195 if (servo_enabled) {
1196 servo_enabled =
false;
1197 tb_stiffness->set_stock_id(Gtk::Stock::NO);
1199 this->set_title(
"Nao GUI");
1204 NaoGuiGtkWindow::on_exit_clicked()
1210 NaoGuiGtkWindow::on_goto_parkpos_clicked()
1212 if (hummot_naoqi_if && hummot_naoqi_if->
has_writer() ) {
1223 NaoGuiGtkWindow::on_goto_zero_all_clicked()
1225 if ( jointpos_if && jointpos_if->has_writer() ) {
1245 NaoGuiGtkWindow::on_get_up_clicked()
1247 if (hummot_naoqi_if && hummot_naoqi_if->
has_writer() ) {
1262 NaoGuiGtkWindow::convert_float2str(
float f,
unsigned int width)
1264 #if GLIBMM_MAJOR_VERSION > 2 || ( GLIBMM_MAJOR_VERSION == 2 && GLIBMM_MINOR_VERSION >= 16 )
1265 return Glib::ustring::format(std::fixed, std::setprecision(width), f);
1267 std::ostringstream ss;
1268 ss << std::fixed << std::setprecision(width);
1271 return Glib::locale_to_utf8(ss.str());
1278 NaoGuiGtkWindow::convert_str2float(Glib::ustring sn,
float *f)
1280 char *endptr = NULL;
1281 *f = strtof(sn.c_str(), &endptr);
1282 if ( endptr[0] != 0 ) {
1283 Glib::ustring s(
"Could not convert string to valid number: ");
1284 s.append(sn, 0, sn.length() - strlen(endptr));
1285 s +=
" >>><b>";
1287 s +=
"</b><<< ";
1288 s.append(endptr + 1, strlen(endptr) - 1);
1290 Gtk::MessageDialog md(*
this, s,
1292 Gtk::MESSAGE_ERROR);
1293 md.set_title(
"Invalid value");
1303 NaoGuiGtkWindow::on_ws_exec_clicked()
1306 if ( convert_str2float(ent_ws_distance->get_text(), &f) ) {
1309 if ( rad_motion_fawkes->get_active() ) {
1319 NaoGuiGtkWindow::on_walkvel_exec_clicked()
1321 float x = 0., y = 0., theta = 0., speed = 0.;
1322 if ( convert_str2float(ent_walkvel_x->get_text(), &x) &&
1323 convert_str2float(ent_walkvel_y->get_text(), &y) &&
1324 convert_str2float(ent_walkvel_theta->get_text(), &theta) &&
1325 convert_str2float(ent_walkvel_speed->get_text(), &speed) )
1329 if ( rad_motion_fawkes->get_active() ) {
1339 NaoGuiGtkWindow::on_kick_exec_clicked()
1342 if ( convert_str2float(ent_kick_strength->get_text(), &f) ) {
1344 if ( cmb_kick_leg->get_active_row_number() == 1 ) {
1345 leg = HumanoidMotionInterface::LEG_RIGHT;
1349 if ( rad_motion_fawkes->get_active() ) {
1359 NaoGuiGtkWindow::on_standup_exec_clicked()
1362 HumanoidMotionInterface::STANDUP_DETECT;
1364 if (cmb_standup_from->get_active_row_number() == 1) {
1365 from = HumanoidMotionInterface::STANDUP_FRONT;
1366 }
else if (cmb_standup_from->get_active_row_number() == 2) {
1367 from = HumanoidMotionInterface::STANDUP_BACK;
1372 if ( rad_motion_fawkes->get_active() ) {
1381 NaoGuiGtkWindow::on_wsw_exec_clicked()
1384 if ( convert_str2float(ent_wsw_distance->get_text(), &f) ) {
1387 if ( rad_motion_fawkes->get_active() ) {
1396 NaoGuiGtkWindow::on_nav_exec_clicked()
1399 if ( convert_str2float(ent_nav_x->get_text(), &x)
1400 && convert_str2float(ent_nav_y->get_text(), &y)
1401 && convert_str2float(ent_nav_ori->get_text(), &ori) ) {
1410 NaoGuiGtkWindow::on_wa_exec_clicked()
1412 float angle, radius;
1413 if ( convert_str2float(ent_wa_angle->get_text(), &angle) &&
1414 convert_str2float(ent_wa_radius->get_text(), &radius) ) {
1417 if ( rad_motion_fawkes->get_active() ) {
1427 NaoGuiGtkWindow::on_turn_exec_clicked()
1430 if ( convert_str2float(ent_turn_angle->get_text(), &f) ) {
1433 if ( rad_motion_fawkes->get_active() ) {
1443 NaoGuiGtkWindow::on_motion_stop_clicked()
1447 if ( rad_motion_fawkes->get_active() ) {
1456 NaoGuiGtkWindow::on_stiffness_global_toggled()
1458 bool is_active = chb_stiffness_global->get_active();
1460 spb_HeadYaw->set_sensitive(! is_active);
1461 spb_HeadPitch->set_sensitive(! is_active);
1462 spb_RShoulderPitch->set_sensitive(! is_active);
1463 spb_RShoulderRoll->set_sensitive(! is_active);
1464 spb_RElbowYaw->set_sensitive(! is_active);
1465 spb_RElbowRoll->set_sensitive(! is_active);
1466 spb_RWristYaw->set_sensitive(! is_active);
1467 spb_RHand->set_sensitive(! is_active);
1468 spb_LShoulderPitch->set_sensitive(! is_active);
1469 spb_LShoulderRoll->set_sensitive(! is_active);
1470 spb_LElbowYaw->set_sensitive(! is_active);
1471 spb_LElbowRoll->set_sensitive(! is_active);
1472 spb_LWristYaw->set_sensitive(! is_active);
1473 spb_LHand->set_sensitive(! is_active);
1474 spb_RHipYawPitch->set_sensitive(! is_active);
1475 spb_RHipPitch->set_sensitive(! is_active);
1476 spb_RHipRoll->set_sensitive(! is_active);
1477 spb_RKneePitch->set_sensitive(! is_active);
1478 spb_RAnklePitch->set_sensitive(! is_active);
1479 spb_RAnkleRoll->set_sensitive(! is_active);
1480 spb_LHipYawPitch->set_sensitive(! is_active);
1481 spb_LHipPitch->set_sensitive(! is_active);
1482 spb_LHipRoll->set_sensitive(! is_active);
1483 spb_LKneePitch->set_sensitive(! is_active);
1484 spb_LAnklePitch->set_sensitive(! is_active);
1485 spb_LAnkleRoll->set_sensitive(! is_active);
1487 spb_stiffness_global->set_sensitive(is_active);
1489 lab_stiff_HeadYaw->set_sensitive(! is_active);
1490 lab_stiff_HeadPitch->set_sensitive(! is_active);
1491 lab_stiff_RShoulderPitch->set_sensitive(! is_active);
1492 lab_stiff_RShoulderRoll->set_sensitive(! is_active);
1493 lab_stiff_RElbowYaw->set_sensitive(! is_active);
1494 lab_stiff_RElbowRoll->set_sensitive(! is_active);
1495 lab_stiff_RWristYaw->set_sensitive(! is_active);
1496 lab_stiff_RHand->set_sensitive(! is_active);
1497 lab_stiff_LShoulderPitch->set_sensitive(! is_active);
1498 lab_stiff_LShoulderRoll->set_sensitive(! is_active);
1499 lab_stiff_LElbowYaw->set_sensitive(! is_active);
1500 lab_stiff_LElbowRoll->set_sensitive(! is_active);
1501 lab_stiff_LWristYaw->set_sensitive(! is_active);
1502 lab_stiff_LHand->set_sensitive(! is_active);
1503 lab_stiff_RHipYawPitch->set_sensitive(! is_active);
1504 lab_stiff_RHipPitch->set_sensitive(! is_active);
1505 lab_stiff_RHipRoll->set_sensitive(! is_active);
1506 lab_stiff_RKneePitch->set_sensitive(! is_active);
1507 lab_stiff_RAnklePitch->set_sensitive(! is_active);
1508 lab_stiff_RAnkleRoll->set_sensitive(! is_active);
1509 lab_stiff_LHipYawPitch->set_sensitive(! is_active);
1510 lab_stiff_LHipPitch->set_sensitive(! is_active);
1511 lab_stiff_LHipRoll->set_sensitive(! is_active);
1512 lab_stiff_LKneePitch->set_sensitive(! is_active);
1513 lab_stiff_LAnklePitch->set_sensitive(! is_active);
1514 lab_stiff_LAnkleRoll->set_sensitive(! is_active);
1518 NaoGuiGtkWindow::on_stiffness_write_clicked()
1522 if (chb_stiffness_global->get_active()) {
1523 float stiff_global = spb_stiffness_global->get_value();
1528 float stiff_head_yaw = spb_HeadYaw->get_value(),
1529 stiff_head_pitch = spb_HeadPitch->get_value(),
1530 stiff_l_shoulder_pitch = spb_LShoulderPitch->get_value(),
1531 stiff_l_shoulder_roll = spb_LShoulderRoll->get_value(),
1532 stiff_l_elbow_yaw = spb_LElbowYaw->get_value(),
1533 stiff_l_elbow_roll = spb_LElbowRoll->get_value(),
1534 stiff_l_wrist_yaw = spb_LWristYaw->get_value(),
1535 stiff_l_hand = spb_LHand->get_value(),
1536 stiff_l_hip_yaw_pitch = spb_LHipYawPitch->get_value(),
1537 stiff_l_hip_pitch = spb_LHipPitch->get_value(),
1538 stiff_l_hip_roll = spb_LHipRoll->get_value(),
1539 stiff_l_knee_pitch = spb_LKneePitch->get_value(),
1540 stiff_l_ankle_roll = spb_LAnkleRoll->get_value(),
1541 stiff_l_ankle_pitch = spb_LAnklePitch->get_value(),
1542 stiff_r_shoulder_pitch = spb_RShoulderPitch->get_value(),
1543 stiff_r_shoulder_roll = spb_RShoulderRoll->get_value(),
1544 stiff_r_elbow_yaw = spb_RElbowYaw->get_value(),
1545 stiff_r_elbow_roll = spb_RElbowRoll->get_value(),
1546 stiff_r_wrist_yaw = spb_RWristYaw->get_value(),
1547 stiff_r_hand = spb_RHand->get_value(),
1548 stiff_r_hip_yaw_pitch = spb_RHipYawPitch->get_value(),
1549 stiff_r_hippitch = spb_RHipPitch->get_value(),
1550 stiff_r_hiproll = spb_RHipRoll->get_value(),
1551 stiff_r_knee_pitch = spb_RKneePitch->get_value(),
1552 stiff_r_ankle_roll = spb_RAnkleRoll->get_value(),
1553 stiff_r_ankle_pitch = spb_RAnklePitch->get_value();
1558 stiff_head_yaw, stiff_head_pitch,
1559 stiff_l_shoulder_pitch, stiff_l_shoulder_roll,
1560 stiff_l_elbow_yaw, stiff_l_elbow_roll,
1561 stiff_l_wrist_yaw, stiff_l_hand,
1562 stiff_l_hip_yaw_pitch,
1563 stiff_l_hip_roll, stiff_l_hip_pitch, stiff_l_knee_pitch,
1564 stiff_l_ankle_pitch, stiff_l_ankle_roll,
1565 stiff_r_shoulder_pitch, stiff_r_shoulder_roll,
1566 stiff_r_elbow_yaw, stiff_r_elbow_roll,
1567 stiff_r_wrist_yaw, stiff_r_hand,
1568 stiff_r_hip_yaw_pitch, stiff_r_hiproll, stiff_r_hippitch,
1569 stiff_r_knee_pitch, stiff_r_ankle_roll, stiff_r_ankle_pitch);
1576 NaoGuiGtkWindow::on_stiffness_read_clicked()
1578 jointstiff_if->
read();
1580 spb_HeadYaw->set_value(jointstiff_if->
head_yaw());
1581 spb_HeadPitch->set_value(jointstiff_if->
head_pitch());
1584 spb_RElbowYaw->set_value(jointstiff_if->
r_elbow_yaw());
1585 spb_RElbowRoll->set_value(jointstiff_if->
r_elbow_roll());
1586 spb_RWristYaw->set_value(jointstiff_if->
r_wrist_yaw());
1587 spb_RHand->set_value(jointstiff_if->
r_hand());
1590 spb_LElbowYaw->set_value(jointstiff_if->
l_elbow_yaw());
1591 spb_LElbowRoll->set_value(jointstiff_if->
l_elbow_roll());
1592 spb_LWristYaw->set_value(jointstiff_if->
l_wrist_yaw());
1593 spb_LHand->set_value(jointstiff_if->
l_hand());
1595 spb_RHipPitch->set_value(jointstiff_if->
r_hip_pitch());
1596 spb_RHipRoll->set_value(jointstiff_if->
r_hip_roll());
1597 spb_RKneePitch->set_value(jointstiff_if->
r_knee_pitch());
1599 spb_RAnkleRoll->set_value(jointstiff_if->
r_ankle_roll());
1601 spb_LHipPitch->set_value(jointstiff_if->
l_hip_pitch());
1602 spb_LHipRoll->set_value(jointstiff_if->
l_hip_roll());
1603 spb_LKneePitch->set_value(jointstiff_if->
l_knee_pitch());
1605 spb_LAnkleRoll->set_value(jointstiff_if->
l_ankle_roll());
1607 spb_stiffness_global->set_value(jointstiff_if->minimum());
1611 NaoGuiGtkWindow::on_tts_exec_clicked()
1620 NaoGuiGtkWindow::on_led_tb_toggled(std::string iface_id,
1621 Gtk::ToggleButton *tb)
1623 if ( (led_ifs.find(iface_id) != led_ifs.end()) && led_ifs[iface_id]->is_valid())
1626 if (tb->get_active()) {
1638 NaoGuiGtkWindow::on_control_leds_toggled()
1640 bool is_active = tb_control_leds->get_active();
1642 scl_chest_r->set_sensitive(is_active);
1643 scl_chest_g->set_sensitive(is_active);
1644 scl_chest_b->set_sensitive(is_active);
1645 scl_left_eye_r->set_sensitive(is_active);
1646 scl_left_eye_g->set_sensitive(is_active);
1647 scl_left_eye_b->set_sensitive(is_active);
1648 scl_right_eye_r->set_sensitive(is_active);
1649 scl_right_eye_g->set_sensitive(is_active);
1650 scl_right_eye_b->set_sensitive(is_active);
1651 scl_left_foot_r->set_sensitive(is_active);
1652 scl_left_foot_g->set_sensitive(is_active);
1653 scl_left_foot_b->set_sensitive(is_active);
1654 scl_right_foot_r->set_sensitive(is_active);
1655 scl_right_foot_g->set_sensitive(is_active);
1656 scl_right_foot_b->set_sensitive(is_active);
1658 tb_left_ear_0->set_sensitive(is_active);
1659 tb_left_ear_36->set_sensitive(is_active);
1660 tb_left_ear_72->set_sensitive(is_active);
1661 tb_left_ear_108->set_sensitive(is_active);
1662 tb_left_ear_144->set_sensitive(is_active);
1663 tb_left_ear_180->set_sensitive(is_active);
1664 tb_left_ear_216->set_sensitive(is_active);
1665 tb_left_ear_252->set_sensitive(is_active);
1666 tb_left_ear_288->set_sensitive(is_active);
1667 tb_left_ear_324->set_sensitive(is_active);
1669 tb_right_ear_0->set_sensitive(is_active);
1670 tb_right_ear_36->set_sensitive(is_active);
1671 tb_right_ear_72->set_sensitive(is_active);
1672 tb_right_ear_108->set_sensitive(is_active);
1673 tb_right_ear_144->set_sensitive(is_active);
1674 tb_right_ear_180->set_sensitive(is_active);
1675 tb_right_ear_216->set_sensitive(is_active);
1676 tb_right_ear_252->set_sensitive(is_active);
1677 tb_right_ear_288->set_sensitive(is_active);
1678 tb_right_ear_324->set_sensitive(is_active);
1683 NaoGuiGtkWindow::on_led_slider_changed(std::string iface_id, Gtk::Scale *scl)
1685 if ( (led_ifs.find(iface_id) != led_ifs.end()) && led_ifs[iface_id]->is_valid())
1690 led_ifs[iface_id]->msgq_enqueue(sim);
1699 NaoGuiGtkWindow::on_led_slider_button_release(GdkEventButton *event,
1700 std::string iface_id,
1703 if ( (led_ifs.find(iface_id) != led_ifs.end()) && led_ifs[iface_id]->is_valid())
1705 on_led_data_changed(led_ifs[iface_id]);
1713 if (tb_control_leds->get_active())
return;
1715 std::string
id = iface->
id();
1716 std::string::size_type last_space =
id.rfind(
" ");
1717 std::string device =
id.substr(last_space + 1);
1720 if ((led_if != NULL) && (led_scales.find(device) != led_scales.end())) {
1723 led_scales[device]->set_value(led_if->
intensity());
1727 if ((led_if != NULL) && (led_buttons.find(device) != led_buttons.end())) {
1730 led_buttons[device]->set_active(led_if->
intensity() >= .5);
1737 NaoGuiGtkWindow::on_button_click_pressed(std::string iface_id)
1739 if (button_ifs.find(iface_id) != button_ifs.end()) {
1743 button_ifs[iface_id]->msgq_enqueue(msg);
1749 NaoGuiGtkWindow::on_button_click_released(std::string iface_id)
1751 if (button_ifs.find(iface_id) != button_ifs.end()) {
1755 button_ifs[iface_id]->msgq_enqueue(msg);
1763 std::string
id = iface->
id();
1764 std::string::size_type start = std::string(
"Nao Button ").size();
1765 std::string device =
id.substr(start);
1768 if ((switch_if != NULL) && (button_labels.find(device) != button_labels.end())) {
1771 ButtonLabelSet &l = button_labels[device];
1772 if (switch_if->
is_enabled() && l.lab_enabled->get_text() ==
"No") {
1773 l.lab_enabled->set_text(
"Yes");
1775 if (! switch_if->
is_enabled() && l.lab_enabled->get_text() ==
"Yes") {
1776 l.lab_enabled->set_text(
"No");
1780 s = convert_float2str(switch_if->
history(), 3);
1781 if (l.lab_history->get_text() != s) l.lab_history->set_text(s);
1783 s = convert_float2str(switch_if->
value(), 1);
1784 if (l.lab_value->get_text() != s) l.lab_value->set_text(s);
1787 if (l.lab_short->get_text() != s) l.lab_short->set_text(s);
1790 if (l.lab_long->get_text() != s) l.lab_long->set_text(s);
1793 if (l.lab_total->get_text() != s) l.lab_total->set_text(s);
1796 printf(
"Could not find %s\n", device.c_str());
TurnOffMessage Fawkes BlackBoard Interface Message.
float r_hand() const
Get r_hand value.
float l_hip_yaw_pitch() const
Get l_hip_yaw_pitch value.
bool is_enabled() const
Get enabled value.
float r_fsr_fr() const
Get r_fsr_fr value.
NaoJointPositionInterface Fawkes BlackBoard Interface.
float accel_x() const
Get accel_x value.
sigc::signal< void > signal_disconnected()
Get "disconnected" signal.
const char * get_hostname() const
Get the client's hostname.
float accel_y() const
Get accel_y value.
sigc::signal< void > signal_connected()
Get "connected" signal.
StandupMessage Fawkes BlackBoard Interface Message.
float l_fsr_rl() const
Get l_fsr_rl value.
TurnMessage Fawkes BlackBoard Interface Message.
float l_fsr_fr() const
Get l_fsr_fr value.
float l_hand() const
Get l_hand value.
float l_knee_pitch() const
Get l_knee_pitch value.
float r_shoulder_pitch() const
Get r_shoulder_pitch value.
KickMessage Fawkes BlackBoard Interface Message.
float r_wrist_yaw() const
Get r_wrist_yaw value.
float r_fsr_rr() const
Get r_fsr_rr value.
StopUltrasonicMessage Fawkes BlackBoard Interface Message.
float r_fsr_fl() const
Get r_fsr_fl value.
float head_yaw() const
Get head_yaw value.
float r_knee_pitch() const
Get r_knee_pitch value.
UltrasonicDirection ultrasonic_direction() const
Get ultrasonic_direction value.
float r_cop_x() const
Get r_cop_x value.
float gyro_ref() const
Get gyro_ref value.
float value() const
Get value value.
bool is_valid() const
Check validity of interface.
void disconnect()
Disconnect socket.
float * ultrasonic_distance_left() const
Get ultrasonic_distance_left value.
uint8_t l_foot_bumper_r() const
Get l_foot_bumper_r value.
float r_ankle_roll() const
Get r_ankle_roll value.
float angle_x() const
Get angle_x value.
uint32_t long_activations() const
Get long_activations value.
StartUltrasonicMessage Fawkes BlackBoard Interface Message.
uint8_t l_foot_bumper_l() const
Get l_foot_bumper_l value.
WalkVelocityMessage Fawkes BlackBoard Interface Message.
float gyro_x() const
Get gyro_x value.
float * ultrasonic_distance_right() const
Get ultrasonic_distance_right value.
float l_ankle_roll() const
Get l_ankle_roll value.
SayMessage Fawkes BlackBoard Interface Message.
SetBodyStiffnessMessage Fawkes BlackBoard Interface Message.
virtual void unregister_listener(BlackBoardInterfaceListener *listener)
Unregister BB interface listener.
NaoSensorInterface Fawkes BlackBoard Interface.
GetUpMessage Fawkes BlackBoard Interface Message.
StandupEnum
From which position to standup.
Base class for all Fawkes BlackBoard interfaces.
NaoJointStiffnessInterface Fawkes BlackBoard Interface.
float l_hip_pitch() const
Get l_hip_pitch value.
float r_elbow_roll() const
Get r_elbow_roll value.
float l_cop_y() const
Get l_cop_y value.
float angle_y() const
Get angle_y value.
uint8_t r_foot_bumper_r() const
Get r_foot_bumper_r value.
float l_shoulder_pitch() const
Get l_shoulder_pitch value.
NaoGuiGtkWindow(BaseObjectType *cobject, const Glib::RefPtr< Gtk::Builder > &builder)
Constructor.
float l_elbow_roll() const
Get l_elbow_roll value.
uint32_t msgid() const
Get msgid value.
float r_hip_pitch() const
Get r_hip_pitch value.
LegEnum
Type to determinate leg side.
uint8_t head_touch_middle() const
Get head_touch_middle value.
bool has_writer() const
Check if there is a writer for the interface.
const char * id() const
Get identifier of interface.
virtual void register_listener(BlackBoardInterfaceListener *listener, ListenerRegisterFlag flag=BBIL_FLAG_ALL)
Register BB event listener.
SwitchInterface Fawkes BlackBoard Interface.
float history() const
Get history value.
WalkArcMessage Fawkes BlackBoard Interface Message.
uint32_t short_activations() const
Get short_activations value.
UltrasonicDirection
This determines the chosen sender/receiver.
HumanoidMotionInterface Fawkes BlackBoard Interface.
bool is_final() const
Get final value.
float l_ankle_pitch() const
Get l_ankle_pitch value.
Base class for exceptions in Fawkes.
void read()
Read from BlackBoard into local copy.
float r_hip_yaw_pitch() const
Get r_hip_yaw_pitch value.
CartesianGotoMessage Fawkes BlackBoard Interface Message.
uint8_t head_touch_front() const
Get head_touch_front value.
void run_and_connect()
Run dialog and try to connect.
float r_shoulder_roll() const
Get r_shoulder_roll value.
float r_elbow_yaw() const
Get r_elbow_yaw value.
float l_hip_roll() const
Get l_hip_roll value.
float l_cop_x() const
Get l_cop_x value.
float l_fsr_fl() const
Get l_fsr_fl value.
DisableSwitchMessage Fawkes BlackBoard Interface Message.
SetIntensityMessage Fawkes BlackBoard Interface Message.
iterator begin()
Get iterator for messages.
float minimum() const
Get minimum value.
float accel_z() const
Get accel_z value.
SetStiffnessesMessage Fawkes BlackBoard Interface Message.
bool connected() const
Check if connection is alive.
uint32_t activation_count() const
Get activation_count value.
WalkSidewaysMessage Fawkes BlackBoard Interface Message.
float head_pitch() const
Get head_pitch value.
uint8_t head_touch_rear() const
Get head_touch_rear value.
unsigned int msgq_enqueue(Message *message)
Enqueue message at end of queue.
void print_trace()
Prints trace to stderr.
LedInterface Fawkes BlackBoard Interface.
float r_hip_roll() const
Get r_hip_roll value.
EnableSwitchMessage Fawkes BlackBoard Interface Message.
float l_shoulder_roll() const
Get l_shoulder_roll value.
TurnOnMessage Fawkes BlackBoard Interface Message.
ParkMessage Fawkes BlackBoard Interface Message.
WalkStraightMessage Fawkes BlackBoard Interface Message.
float gyro_y() const
Get gyro_y value.
float l_wrist_yaw() const
Get l_wrist_yaw value.
virtual Interface * open_for_reading(const char *interface_type, const char *identifier)=0
Open interface for reading.
float l_elbow_yaw() const
Get l_elbow_yaw value.
uint8_t r_foot_bumper_l() const
Get r_foot_bumper_l value.
float battery_charge() const
Get battery_charge value.
MoveServoMessage Fawkes BlackBoard Interface Message.
EmitUltrasonicWaveMessage Fawkes BlackBoard Interface Message.
MoveHeadMessage Fawkes BlackBoard Interface Message.
virtual std::list< Interface * > open_multiple_for_reading(const char *type_pattern, const char *id_pattern="*")=0
Open multiple interfaces for reading.
~NaoGuiGtkWindow()
Destructor.
float r_cop_y() const
Get r_cop_y value.
StopMessage Fawkes BlackBoard Interface Message.
FawkesNetworkClient * get_client()
Get client.
float r_ankle_pitch() const
Get r_ankle_pitch value.
float l_total_weight() const
Get l_total_weight value.
float r_total_weight() const
Get r_total_weight value.
float intensity() const
Get intensity value.
float l_fsr_rr() const
Get l_fsr_rr value.
Interface listener with dispatcher.
float r_fsr_rl() const
Get r_fsr_rl value.
SpeechSynthInterface Fawkes BlackBoard Interface.
sigc::signal< void, Interface * > signal_data_changed()
Get "data changed" signal.
NavigatorInterface Fawkes BlackBoard Interface.
uint8_t chest_button() const
Get chest_button value.
virtual void close(Interface *interface)=0
Close interface.