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
00026
00034 #ifndef _TYPES_H_
00035 #define _TYPES_H_
00036
00037 #include <hitec5980sg/hitec5980sg.h>
00038
00039 #include <iostream>
00040 #include <pthread.h>
00041 #include <gtk/gtk.h>
00042 #include <glib.h>
00043
00044 #include <boost/lexical_cast.hpp>
00045 #include <boost/format.hpp>
00046
00047 #include <HD/hd.h>
00048 #include <HDU/hduVector.h>
00049 #include <HDU/hduError.h>
00050 #include <HDU/hduMatrix.h>
00051 #include <HDU/hduPlane.h>
00052 #include <HL/hl.h>
00053
00054 #include <humanoid_functions.h>
00055
00056 #include <ros/ros.h>
00057 #include "tf/transform_datatypes.h"
00058 #include <tf/transform_broadcaster.h>
00059 #include <tf/transform_listener.h>
00060
00064 typedef struct{
00065
00066 double HeadTilt;
00067 double RightShoulderFlexion;
00068 double RightShoulderAbduction;
00069 double RightElbowFlexion;
00070 double LeftShoulderFlexion;
00071 double LeftShoulderAbduction;
00072 double LeftElbowFlexion;
00073 double TorsoRotation;
00074 double TorsoFlexion;
00075 double TorsoLateralFlexion;
00076 double RightAnkleInversion;
00077 double RightAnkleFlexion;
00078 double RightKneeFlexion;
00079 double RightHipAbduction;
00080 double RightHipFlexion;
00081 double LeftAnkleInversion;
00082 double LeftAnkleFlexion;
00083 double LeftKneeFlexion;
00084 double LeftHipAbduction;
00085 double LeftHipFlexion;
00086
00087 double X_arm_end_left;
00088 double Y_arm_end_left;
00089 double Z_arm_end_left;
00090 double ROLL_arm_end_left;
00091 double PITCH_arm_end_left;
00092 double YAW_arm_end_left;
00093 double X_arm_end_right;
00094 double Y_arm_end_right;
00095 double Z_arm_end_right;
00096 double ROLL_arm_end_right;
00097 double PITCH_arm_end_right;
00098 double YAW_arm_end_right;
00099
00100 double detached_leg_pos_left[3];
00101 double detached_leg_rpy_left[3];
00102 double detached_leg_pos_right[3];
00103 double detached_leg_rpy_right[3];
00104
00105 Eigen::Vector3d COG_detached_leg_left;
00106 Eigen::Vector3d COG_detached_leg_right;
00107 }RobotKinData;
00108
00112 typedef struct{
00113
00114 GtkWidget *joints_left_side;
00115 GtkWidget *joints_right_side;
00116 GtkWidget *x_label_left;
00117 GtkWidget *y_label_left;
00118 GtkWidget *z_label_left;
00119 GtkWidget *roll_label_left;
00120 GtkWidget *pitch_label_left;
00121 GtkWidget *yaw_label_left;
00122 GtkWidget *x_label_right;
00123 GtkWidget *y_label_right;
00124 GtkWidget *z_label_right;
00125 GtkWidget *roll_label_right;
00126 GtkWidget *pitch_label_right;
00127 GtkWidget *yaw_label_right;
00128 GtkWidget *head_tilt_label;
00129 GtkWidget *right_arm_label;
00130 GtkWidget *left_arm_label;
00131 GtkWidget *torso_label;
00132 GtkWidget *right_leg_label;
00133 GtkWidget *left_leg_label;
00134
00135 GtkWidget *phantom_x_label;
00136 GtkWidget *phantom_y_label;
00137 GtkWidget *phantom_z_label;
00138 GtkWidget *phantom_pen_tip_x_label;
00139 GtkWidget *phantom_pen_tip_y_label;
00140 GtkWidget *phantom_pen_tip_z_label;
00141 GtkWidget *phantom_speed_label;
00142 GtkWidget *phantom_jnt1_label;
00143 GtkWidget *phantom_jnt2_label;
00144 GtkWidget *phantom_jnt3_label;
00145 GtkWidget *phantom_gbl1_label;
00146 GtkWidget *phantom_gbl2_label;
00147 GtkWidget *phantom_gbl3_label;
00148
00149 GtkWidget *auto_speed_arm_theta1_bar;
00150 GtkWidget *auto_speed_arm_theta2_bar;
00151 GtkWidget *auto_speed_arm_theta3_bar;
00152
00153 GtkWidget *start_loop_button;
00154
00155 GtkWidget *kin_model_combobox;
00156
00157 GtkWidget *workspace_zone_label;
00158
00159 GtkWidget *drawing_demo_label;
00160 GtkWidget *drawing_demo_plane_label;
00161
00162 GtkWidget *leg_balancing_demo_label;
00163
00164 GtkWidget *user_path_label;
00165 GtkWidget *user_path_run_button;
00166
00167 GtkWidget *pos_x_force_bar;
00168 GtkWidget *neg_x_force_bar;
00169 GtkWidget *pos_y_force_bar;
00170 GtkWidget *neg_y_force_bar;
00171 GtkWidget *pos_z_force_bar;
00172 GtkWidget *neg_z_force_bar;
00173
00174 GtkWidget *force_magnitude_label;
00175
00176 GtkWidget *motor_1_temp;
00177 GtkWidget *motor_2_temp;
00178 GtkWidget *motor_3_temp;
00179
00180 GtkWidget *status_bar;
00181
00182 GtkWidget *demo1_checkbox;
00183 GtkWidget *demo2_checkbox;
00184 GtkWidget *demo3_checkbox;
00185 GtkWidget *demo4_checkbox;
00186
00187 GtkWidget *stop_button;
00188 GtkWidget *go_button;
00189 }WidgetCollection;
00190
00194 typedef struct
00195 {
00196 HHLRC hHLRC;
00197 HHD hHD;
00198 HDboolean m_button1State;
00199 HDboolean m_button2State;
00200 bool m_button1Clicked;
00201 bool m_button2Clicked;
00202 hduVector3Dd m_devicePosition;
00203 hduVector3Dd jointAngles;
00204 hduVector3Dd gimbalAngles;
00205 hduVector3Dd average_speed;
00206 HDErrorInfo m_error;
00207 bool phantom_on;
00208 HDdouble max_stiffness;
00209 HDdouble max_damping;
00210 HDdouble max_force;
00211 HDdouble max_continuous_force;
00212 HDdouble motor_temperature[3];
00213 bool need_update;
00214 hduMatrix end_effector_transform;
00215 hduVector3Dd m_PenTipPosition;
00216 tf::Transform world_to_phantom;
00217 tf::Transform phantom_to_base_point;
00218 tf::Transform base_point_to_pen_tip;
00219 } DeviceData;
00220
00224 typedef struct
00225 {
00226 bool exit_status;
00227 double coordinate_resolution;
00228 double automatic_speed_control_freq;
00229 int kinematic_model;
00230 bool manual_speed_control;
00231 short unsigned int manual_speed;
00232 bool automatic_speed_control;
00233 double arm_auto_angular_speed[3];
00234 short unsigned int arm_auto_speed[3];
00235 double pos_coord_scale;
00236 unsigned int selected_notebook_page;
00237 double cntrl_pos_back_front;
00238 short unsigned int robot_home_position_base_speed;
00239 unsigned int control_rate;
00240 double graphics_refresh_rate;
00241 unsigned int haptics_rate;
00242 } ParameterSet;
00243
00247 typedef struct
00248 {
00249 hduVector3Dd arm_main_spheresPosition;
00250 hduVector3Dd arm_back_spherePosition;
00251 double arm_main_sphere_max_Radius;
00252 double arm_main_sphere_min_Radius;
00253 double arm_back_sphereRadius;
00254 hduVector3Dd leg_main_spheresPosition;
00255 hduVector3Dd leg_back_spherePosition;
00256 hduVector3Dd leg_front_spherePosition;
00257 double leg_main_sphere_max_Radius;
00258 double leg_main_sphere_min_Radius;
00259 double leg_back_sphereRadius;
00260 hduVector3Dd applied_force;
00261 short unsigned int force_threshold;
00262 short unsigned int chosen_demo;
00263 hduVector3Dd demo_2_point_1;
00264 hduVector3Dd demo_2_point_2;
00265 hduVector3Dd demo_2_point_3;
00266 hduPlaned demo_2_Plane;
00267 double demo2_distance_to_plane;
00268 bool demo_user_path_point_storing;
00269 bool demo_user_path_is_run_once;
00270 bool demo_user_path_run_start;
00271 std::vector<double> user_path_X_pnts;
00272 std::vector<double> user_path_Y_pnts;
00273 std::vector<double> user_path_Z_pnts;
00274 } HapticsData;
00275
00279 typedef struct
00280 {
00281 hitec_5980SG *servo;
00282 RobotKinData robot_kin_data;
00283 pthread_mutex_t mutex_gtk;
00284 WidgetCollection updt_labels;
00285 DeviceData phantom_data;
00286 ParameterSet parameters;
00287 bool haptic_loop_start;
00288 bool update_labels;
00289 HapticsData haptics_data;
00290 humanoid *humanoid_f;
00291 }shared_vars_t;
00292
00293 #endif
00294