ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Addendum to my answer above...

The timing is a bit different too. You need to switch the scale factor for the gx3.

in 3dmgx2.h:

static const int TICKS_PER_SEC_GX2  = 19660800;

static const int TICKS_PER_SEC_GX3  = 62500;

in 3dmgx2.cc, extractTime() function:

...

return start_time + (is_gx3 ? (uint64_t)(all_ticks * (1000000000.0 / TICKS_PER_SEC_GX3)) : (uint64_t)(all_ticks * (1000000000.0 / TICKS_PER_SEC_GX2))); // syntax a bit funny because of C++ compiler

Finally, to make the previous change mentioned above more generic:

In 3dmgx2.cc, getDeviceIdentifierString():

...

if( type==ID_DEVICE_NAME ){

is_gx3 = (strstr(id,"GX3") != NULL);

}

is_gx3 should be declared in 3dmgx2.h and set to false in the constructor.

Finally, in stopContinuous:

uint8_t cmd[3];

cmd[0] = CMD_STOP_CONTINUOUS;

cmd[1] = 0x75; // gx3 - confirms user intent

cmd[2] = 0xb4; // gx3 - confirms user intent

send(cmd, is_gx3 ? 3 : 1);