Revision 7adf90be examples/yarp_icub/src/icub_data_receiver.cpp
examples/yarp_icub/src/icub_data_receiver.cpp | ||
---|---|---|
5 | 5 |
using namespace yarp::os; |
6 | 6 |
using namespace std; |
7 | 7 |
|
8 |
iCubDataReceiver::iCubDataReceiver(int period, IEncoders *_iencs, iCubJointInterface *_icub_jointinterface):RateThread(period){ |
|
8 |
iCubDataReceiver::iCubDataReceiver(int period, IEncodersTimed *_iencs, iCubJointInterface *_icub_jointinterface):RateThread(period){
|
|
9 | 9 |
iencs = _iencs; |
10 | 10 |
icub_jointinterface = _icub_jointinterface; |
11 | 11 |
int joints; |
12 | 12 |
iencs->getAxes(&joints); |
13 | 13 |
positions.resize(joints); |
14 | 14 |
velocities.resize(joints); |
15 |
timestamps.resize(joints); |
|
15 | 16 |
} |
16 | 17 |
|
17 | 18 |
bool iCubDataReceiver::threadInit(){ return true; } |
... | ... | |
24 | 25 |
} |
25 | 26 |
|
26 | 27 |
void iCubDataReceiver::run(){ |
28 |
|
|
27 | 29 |
//grab pos+vel data: |
28 |
iencs->getEncoders(positions.data());
|
|
30 |
iencs->getEncodersTimed(positions.data(), timestamps.data());
|
|
29 | 31 |
iencs->getEncoderSpeeds(velocities.data()); |
30 |
double timestamp = get_timestamp_ms(); |
|
32 |
|
|
33 |
//double timestamp = get_timestamp_ms(); |
|
31 | 34 |
|
32 | 35 |
//publish data to humotion |
33 | 36 |
for(int i=0; i<positions.size(); i++){ |
34 |
icub_jointinterface->fetch_position(i, positions[i], timestamp); |
|
35 |
icub_jointinterface->fetch_speed(i, velocities[i], timestamp); |
|
37 |
icub_jointinterface->fetch_position(i, positions[i], timestamps[i]);
|
|
38 |
icub_jointinterface->fetch_speed(i, velocities[i], timestamps[i]);
|
|
36 | 39 |
} |
37 | 40 |
|
38 | 41 |
//tell humotion to update lid angle (hack) |
39 |
icub_jointinterface->fetch_position(100, 0.0, timestamp);
|
|
42 |
icub_jointinterface->fetch_position(100, 0.0, get_timestamp_ms());
|
|
40 | 43 |
//fixme: use real id |
41 | 44 |
} |
Also available in: Unified diff