![]() |
Atlas Behavior Library
1.0
|
00001 00002 #ifndef __AtlasSimInterfaceTypes_H 00003 #define __AtlasSimInterfaceTypes_H 00004 00005 #include "AtlasSimVectorTypes.h" 00006 00007 #if BDI_OS_TYPE_win32 00008 00009 typedef unsigned __int64 uint64_t; 00010 00011 #else 00012 00013 #include <stdint.h> 00014 #include <sys/types.h> 00015 00016 #endif 00017 00018 #if __GNUC__ >= 4 00019 #pragma GCC visibility push(default) 00020 #endif 00021 00022 //#ifndef NOT_IN_DOXYGEN 00023 //namespace Atlas { 00024 //#endif 00025 00026 #define ATLAS_SIM_SOFTWARE_VERSION_STRING "1.0.3" 00027 #define ATLAS_SIM_SOFTWARE_VERSION_MAJOR 1 00028 #define ATLAS_SIM_SOFTWARE_VERSION_MINOR 0 00029 #define ATLAS_SIM_SOFTWARE_VERSION_POINT 3 00030 00031 00037 00038 00045 namespace Atlas { 00046 00047 typedef enum 00048 { 00049 LINK_UNKNOWN = -1, 00050 LINK_PELVIS = 0, 00051 LINK_LTORSO = 1, 00052 LINK_MTORSO = 2, 00053 LINK_UTORSO = 3, 00054 LINK_HEAD = 4, 00055 LINK_L_UGLUT = 5, 00056 LINK_L_LGLUT = 6, 00057 LINK_L_ULEG = 7, 00058 LINK_L_LLEG = 8, 00059 LINK_L_TALUS = 9, 00060 LINK_L_FOOT = 10, 00061 LINK_R_UGLUT = 11, 00062 LINK_R_LGLUT = 12, 00063 LINK_R_ULEG = 13, 00064 LINK_R_LLEG = 14, 00065 LINK_R_TALUS = 15, 00066 LINK_R_FOOT = 16, 00067 LINK_L_CLAV = 17, 00068 LINK_L_SCAP = 18, 00069 LINK_L_UARM = 19, 00070 LINK_L_LARM = 20, 00071 LINK_L_FARM = 21, 00072 LINK_L_HAND = 22, 00073 LINK_R_CLAV = 23, 00074 LINK_R_SCAP = 24, 00075 LINK_R_UARM = 25, 00076 LINK_R_LARM = 26, 00077 LINK_R_FARM = 27, 00078 LINK_R_HAND = 28, 00079 NUM_LINKS 00080 00081 } AtlasLinkId; 00082 00083 } 00084 00091 namespace Atlas { 00092 00093 typedef enum 00094 { 00095 JOINT_UNKNOWN = -1, 00096 JOINT_BACK_LBZ = 0, 00097 JOINT_BACK_MBY = 1, 00098 JOINT_BACK_UBX = 2, 00099 JOINT_NECK_AY = 3, 00100 JOINT_L_LEG_UHZ = 4, 00101 JOINT_L_LEG_MHX = 5, 00102 JOINT_L_LEG_LHY = 6, 00103 JOINT_L_LEG_KNY = 7, 00104 JOINT_L_LEG_UAY = 8, 00105 JOINT_L_LEG_LAX = 9, 00106 JOINT_R_LEG_UHZ = 10, 00107 JOINT_R_LEG_MHX = 11, 00108 JOINT_R_LEG_LHY = 12, 00109 JOINT_R_LEG_KNY = 13, 00110 JOINT_R_LEG_UAY = 14, 00111 JOINT_R_LEG_LAX = 15, 00112 JOINT_L_ARM_USY = 16, 00113 JOINT_L_ARM_SHX = 17, 00114 JOINT_L_ARM_ELY = 18, 00115 JOINT_L_ARM_ELX = 19, 00116 JOINT_L_ARM_UWY = 20, 00117 JOINT_L_ARM_MWX = 21, 00118 JOINT_R_ARM_USY = 22, 00119 JOINT_R_ARM_SHX = 23, 00120 JOINT_R_ARM_ELY = 24, 00121 JOINT_R_ARM_ELX = 25, 00122 JOINT_R_ARM_UWY = 26, 00123 JOINT_R_ARM_MWX = 27, 00124 NUM_JOINTS 00125 00126 } AtlasJointId; 00127 00128 } 00129 00130 00137 00138 00145 struct AtlasJointDesired 00146 { 00147 float q_d; 00148 float qd_d; 00149 float f_d; 00150 00152 AtlasJointDesired() {q_d = qd_d = f_d = 0.0f;} 00153 }; 00154 00155 00173 struct AtlasJointControlParams 00174 { 00175 float k_q_p; 00176 float k_q_i; 00177 float k_qd_p; 00178 00180 AtlasJointControlParams() 00181 { 00182 k_q_p = k_q_i = k_qd_p = 0.0f; 00183 } 00184 }; 00185 00186 00193 struct AtlasControlDataToRobot 00194 { 00195 uint64_t timestamp; 00196 00197 AtlasJointDesired j[Atlas::NUM_JOINTS]; 00198 AtlasJointControlParams jparams[Atlas::NUM_JOINTS]; 00199 00201 AtlasControlDataToRobot() {timestamp = 0l;} 00202 }; 00203 00204 00205 00206 00213 00214 00221 struct AtlasJointState 00222 { 00223 float q; 00224 float qd; 00225 float f; 00226 00228 AtlasJointState() {q = qd = f = 0.0f;} 00229 }; 00230 00231 00248 struct AtlasIMUData 00249 { 00250 uint64_t imu_timestamp; 00251 00252 AtlasQuaternion orientation_estimate; 00253 AtlasVec3f angular_velocity; 00254 AtlasVec3f linear_acceleration; 00255 00257 AtlasIMUData() : 00258 imu_timestamp(0l), 00259 angular_velocity(0.0f), 00260 linear_acceleration(0.0f) 00261 {} 00262 }; 00263 00264 00274 struct AtlasFootSensor 00275 { 00276 float fz; 00277 float mx; 00278 float my; 00279 00281 AtlasFootSensor() {fz = mx = my = 0.0f;} 00282 }; 00283 00284 00291 namespace Atlas { 00292 00293 enum 00294 { 00295 FS_LEFT = 0, 00296 FS_RIGHT, 00297 NUM_FOOT_SENSORS 00298 }; 00299 00300 } 00301 00311 struct AtlasWristSensor 00312 { 00313 AtlasVec3f f; 00314 AtlasVec3f m; 00315 00317 AtlasWristSensor() : 00318 f(0.0f), 00319 m(0.0f) 00320 {} 00321 }; 00322 00323 00330 namespace Atlas { 00331 00332 enum 00333 { 00334 WS_LEFT = 0, 00335 WS_RIGHT, 00336 NUM_WRIST_SENSORS 00337 }; 00338 00339 } 00340 00347 struct AtlasControlDataFromRobot 00348 { 00349 uint64_t seq_id; 00350 00351 double t; 00352 00353 AtlasJointState j[Atlas::NUM_JOINTS]; 00354 00355 AtlasIMUData imu; 00356 AtlasFootSensor foot_sensors[Atlas::NUM_FOOT_SENSORS]; 00357 AtlasWristSensor wrist_sensors[Atlas::NUM_WRIST_SENSORS]; 00358 00359 AtlasVec3f pelvis_position; 00360 AtlasVec3f pelvis_velocity; 00361 00362 AtlasControlDataFromRobot() : 00363 seq_id(0l), 00364 t(0.0), 00365 pelvis_position(0.0f), 00366 pelvis_velocity(0.0f) 00367 {} 00368 }; 00369 00370 00377 namespace Atlas { 00378 00379 typedef enum 00380 { 00381 BEHAVIOR_PARAM_DESIRED_YAW_RATE = 0, 00382 BEHAVIOR_PARAM_DESIRED_VELOCITY, 00383 NUM_BEHAVIOR_PARAMS 00384 00385 } AtlasBehaviorParameterId; 00386 00387 } 00388 00395 namespace Atlas { 00396 00397 typedef enum 00398 { 00399 NO_ERROR = 0, 00400 ERROR_UNSPECIFIED = -1, 00401 ERROR_VALUE_OUT_OF_RANGE = -2, 00402 ERROR_INVALID_INDEX = -3, 00403 ERROR_FAILED_TO_START_BEHAVIOR = -4, 00404 ERROR_NO_ACTIVE_BEHAVIOR = -5, 00405 ERROR_NO_SUCH_BEHAVIOR = -6, 00406 ERROR_BEHAVIOR_NOT_IMPLEMENTED = -7, 00407 ERROR_TIME_RAN_BACKWARD = -8, 00408 ERROR_INVALID_PARAMETER = -9, 00409 NUM_ERRORS 00410 00411 } AtlasErrorCode; 00412 00413 } 00414 00415 //#ifndef NOT_IN_DOXYGEN 00416 //} // end namespace Atlas 00417 //#endif 00418 00419 #if __GNUC__ >= 4 00420 #pragma GCC visibility pop 00421 #endif 00422 00423 #endif // __AtlasSimInterfaceTypes_H 00424