Revision b1a51350
| server/action/gazetarget.action | ||
|---|---|---|
| 14 | 14 |
float32 pan_offset |
| 15 | 15 |
float32 tilt_offset |
| 16 | 16 |
|
| 17 |
#relative or absolute gaze target? |
|
| 18 |
uint8 GAZETARGET_RELATIVE = 0 |
|
| 19 |
uint8 GAZETARGET_ABSOLUTE = 0 |
|
| 20 |
uint8 type |
|
| 21 |
|
|
| 22 |
#timestamp of the target (important in case of relative targets) |
|
| 23 |
time timestamp |
|
| 24 |
|
|
| 17 | 25 |
--- |
| 18 | 26 |
#result |
| 19 | 27 |
uint32 result |
| server/include/ROS/GazeCallbackWrapperROS.h | ||
|---|---|---|
| 42 | 42 |
// |
| 43 | 43 |
}; |
| 44 | 44 |
|
| 45 |
//! this provides a consistent transformation of ros ts to double |
|
| 46 |
double convert_ros_to_timestamp_ms(ros::Time t){
|
|
| 47 |
return t.sec + t.nsec/1000000000.0; |
|
| 48 |
} |
|
| 49 |
|
|
| 50 |
|
|
| 45 | 51 |
void call(const GoalConstPtr &goal){
|
| 46 | 52 |
feedback.result = 1; |
| 47 | 53 |
|
| ... | ... | |
| 55 | 61 |
gaze_state.tilt = request->tilt; |
| 56 | 62 |
gaze_state.roll = request->roll; |
| 57 | 63 |
|
| 58 |
gaze_state.timestamp = get_timestamp(); //FIXME!! |
|
| 64 |
//use timestamp from request |
|
| 65 |
gaze_state.timestamp = convert_ros_to_timestamp_ms(request->timestamp); //get_timestamp(); |
|
| 66 |
if (request->type == hlrc_server::gazetargetGoal::GAZETARGET_RELATIVE){
|
|
| 67 |
gaze_state.type = humotion::GazeState::RELATIVE; |
|
| 68 |
}else{
|
|
| 69 |
gaze_state.type = humotion::GazeState::ABSOLUTE; |
|
| 70 |
} |
|
| 59 | 71 |
|
| 60 | 72 |
//default: |
| 61 | 73 |
gaze_state.vergence = request->vergence; |
| server/include/RSB/GazeCallbackWrapper.h | ||
|---|---|---|
| 43 | 43 |
gaze_state.pan = gaze->pan(); |
| 44 | 44 |
gaze_state.tilt = gaze->tilt(); |
| 45 | 45 |
gaze_state.roll = gaze->roll(); |
| 46 |
//RSB supports only absolute targets for now... |
|
| 46 | 47 |
gaze_state.timestamp = 123.45; //FIXME!! |
| 48 |
gaze_state.type = humotion::GazeState::ABSOLUTE; |
|
| 47 | 49 |
//vergence |
| 48 | 50 |
gaze_state.vergence = (gaze->has_vergence())?gaze->vergence():0.0; |
| 49 | 51 |
//offsets |
| server/src/MiddlewareROS.cpp | ||
|---|---|---|
| 48 | 48 |
actionlib::SimpleActionClient<actionspec> *ac = new actionlib::SimpleActionClient<actionspec>(scope, true); |
| 49 | 49 |
|
| 50 | 50 |
if (!ac->waitForServer(ros::Duration(1))){
|
| 51 |
char buf[256]; |
|
| 52 |
snprintf(buf, 256, "ERROR: action service %s not ready", scope.c_str()); |
|
| 53 |
throw runtime_error(buf); |
|
| 51 |
printf("> ERROR: action service %s not ready, wait timed out...\n", scope.c_str());
|
|
| 52 |
return NULL; |
|
| 54 | 53 |
} |
| 55 | 54 |
return ac; |
| 56 | 55 |
} |
| ... | ... | |
| 102 | 101 |
|
| 103 | 102 |
//create tts client |
| 104 | 103 |
tts_ac = create_action_client<hlrc_server::ttsAction>(base_scope + "/tts_provider"); |
| 104 |
if (tts_ac == NULL){
|
|
| 105 |
printf("> tts action service not available, will not do any TTS !\n");
|
|
| 106 |
} |
|
| 105 | 107 |
|
| 106 | 108 |
|
| 107 | 109 |
|
| ... | ... | |
| 116 | 118 |
|
| 117 | 119 |
//call a tts system to convert a string to an utterance |
| 118 | 120 |
boost::shared_ptr<Utterance> MiddlewareROS::tts_call(string text){
|
| 119 |
//double tts_timeout = 1.0; //seconds. DO NOT CHANGE THIS! |
|
| 120 |
|
|
| 121 | 121 |
boost::shared_ptr<Utterance> utterance(new Utterance()); |
| 122 | 122 |
|
| 123 |
//double tts_timeout = 1.0; //seconds. DO NOT CHANGE THIS! |
|
| 124 |
if (tts_ac == NULL){
|
|
| 125 |
printf("> tts action service not available. will not speak '%s'\n", text.c_str());
|
|
| 126 |
return utterance; |
|
| 127 |
} |
|
| 128 |
|
|
| 123 | 129 |
hlrc_server::ttsGoal goal; |
| 124 | 130 |
|
| 125 | 131 |
goal.text = text; |
Also available in: Unified diff