From bec1b8ef67f40b544bb82b2f9d00e512b8363f07 Mon Sep 17 00:00:00 2001 From: Adrian Knobloch <adrian.knobloch@student.kit.edu> Date: Mon, 26 Jun 2017 21:21:45 +0200 Subject: [PATCH] Fix wrong initial positioning of robot nodes --- SimDynamics/DynamicsEngine/BulletEngine/BulletObject.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/SimDynamics/DynamicsEngine/BulletEngine/BulletObject.cpp b/SimDynamics/DynamicsEngine/BulletEngine/BulletObject.cpp index 680bb732d..d78cbbd11 100644 --- a/SimDynamics/DynamicsEngine/BulletEngine/BulletObject.cpp +++ b/SimDynamics/DynamicsEngine/BulletEngine/BulletObject.cpp @@ -281,9 +281,10 @@ namespace SimDynamics { MutexLockPtr lock = getScopedLock(); /* convert to local coord system, apply comoffset and convert back*/ - Eigen::Matrix4f poseCom = pose; - poseCom.block(0, 3, 3, 1) += com; - this->rigidBody->setWorldTransform(BulletEngine::getPoseBullet(poseCom)); + Eigen::Matrix4f poseLocal = Eigen::Matrix4f::Identity(); + poseLocal.block(0, 3, 3, 1) += com; + Eigen::Matrix4f poseGlobal = pose * poseLocal; + this->rigidBody->setWorldTransform(BulletEngine::getPoseBullet(poseGlobal)); // notify motionState of non-robot nodes if(!boost::dynamic_pointer_cast<VirtualRobot::RobotNode>(sceneObject)) @@ -295,7 +296,7 @@ namespace SimDynamics void BulletObject::setPose(const Eigen::Matrix4f& pose) { MutexLockPtr lock = getScopedLock(); - //DynamicsObject::setPose(pose); + DynamicsObject::setPose(pose); setPoseIntern(pose); } -- GitLab