[Rock-dev] Problem with mixed sizes of typekit types

Dennis Hemker dennis.hemker at dfki.de
Fri Jun 9 12:35:50 CEST 2017


Hey Guys,

I encountered a weird problem during the use of the C++-based 
rock-replay2, which uses the local typekit definitions to load 
marshalled types from the log files. In some logfiles, the local and the 
marshalled typekit type mismatch in their sizes, for instance the 
RigidBodyState_m type. The log was recorded with the Sherpa-Bot in Utah:

type a:
compound /base/samples/RigidBodyState_m [416] {
       (+0) compound /base/Time [8] {
         (+0) sint(8) (/int64_t) microseconds
       }; time
       (+8) container /std/string</int8_t> sourceFrame
       (+16) container /std/string</int8_t> targetFrame
       (+24) compound /wrappers/Matrix</double,3,1> [24] {
         (+0) array[3] of
           float(8) (/double) data
       }; position
       (+48) compound /wrappers/Matrix</double,3,3> [72] {
         (+0) array[9] of
           float(8) (/double) data
       }; cov_position
       (+120) compound /wrappers/Quaternion</double> [32] {
         (+0) array[3] of
           float(8) (/double) im
         (+24) float(8) (/double) re
       }; orientation
       (+152) compound /wrappers/Matrix</double,3,3> [72] {
         (+0) array[9] of
           float(8) (/double) data
       }; cov_orientation
       (+224) compound /wrappers/Matrix</double,3,1> [24] {
         (+0) array[3] of
           float(8) (/double) data
       }; velocity
       (+248) compound /wrappers/Matrix</double,3,3> [72] {
         (+0) array[9] of
           float(8) (/double) data
       }; cov_velocity
       (+320) compound /wrappers/Matrix</double,3,1> [24] {
         (+0) array[3] of
           float(8) (/double) data
       }; angular_velocity
       (+344) compound /wrappers/Matrix</double,3,3> [72] {
         (+0) array[9] of
           float(8) (/double) data
       }; cov_angular_velocity
     };
type b:
compound /base/samples/RigidBodyState_m [464] {
       (+0) compound /base/Time [8] {
         (+0) sint(8) (/int64_t) microseconds
       }; time
       (+8) container /std/string</int8_t> sourceFrame
       (+40) container /std/string</int8_t> targetFrame
       (+72) compound /wrappers/Matrix</double,3,1> [24] {
         (+0) array[3] of
           float(8) (/double) data
       }; position
       (+96) compound /wrappers/Matrix</double,3,3> [72] {
         (+0) array[9] of
           float(8) (/double) data
       }; cov_position
       (+168) compound /wrappers/Quaternion</double> [32] {
         (+0) array[3] of
           float(8) (/double) im
         (+24) float(8) (/double) re
       }; orientation
       (+200) compound /wrappers/Matrix</double,3,3> [72] {
         (+0) array[9] of
           float(8) (/double) data
       }; cov_orientation
       (+272) compound /wrappers/Matrix</double,3,1> [24] {
         (+0) array[3] of
           float(8) (/double) data
       }; velocity
       (+296) compound /wrappers/Matrix</double,3,3> [72] {
         (+0) array[9] of
           float(8) (/double) data
       }; cov_velocity
       (+368) compound /wrappers/Matrix</double,3,1> [24] {
         (+0) array[3] of
           float(8) (/double) data
       }; angular_velocity
       (+392) compound /wrappers/Matrix</double,3,3> [72] {
         (+0) array[9] of
           float(8) (/double) data
       }; cov_angular_velocity
     };Checking /body_joint.state

Differences can be found in the source- and targetFrame definitions.

Thank you and best regards,

Dennis



More information about the Rock-dev mailing list