Skip to content

Commit 76e9662

Browse files
author
Shunichi Nozawa
committed
Check if the kinematics hashes are consistent between saver
1 parent bd2097a commit 76e9662

1 file changed

Lines changed: 5 additions & 0 deletions

File tree

src/libopenrave/kinbodystatesaver.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,11 @@ KinBody::KinBodyStateSaver::KinBodyStateSaver(KinBodyPtr pbody, int options) : _
299299

300300
KinBody::KinBodyStateSaver::KinBodyStateSaver(KinBodyPtr pbody, const KinBodyStateSaver& reference) : _pbody(pbody), _options(reference._options), _bRestoreOnDestructor(reference._bRestoreOnDestructor)
301301
{
302+
if( pbody->GetKinematicsGeometryHash() != reference.GetBody()->GetKinematicsGeometryHash() ) {
303+
throw OPENRAVE_EXCEPTION_FORMAT(_("env=%s, KinBodyStateSaver for body '%s' cannot be constructed from other saver since the hash is different. bodyHash=%s;referenceBodyHash=%s. (options=%d)"),
304+
pbody->GetEnv()->GetNameId() % pbody->GetName() % pbody->GetKinematicsGeometryHash() % reference.GetBody()->GetKinematicsGeometryHash() % _options,
305+
ORE_InvalidArguments);
306+
}
302307
if( _options & Save_LinkTransformation ) {
303308
_vLinkTransforms = reference._vLinkTransforms;
304309
_vdoflastsetvalues = reference._vdoflastsetvalues;

0 commit comments

Comments
 (0)