RobotNodePtr RobotNodeFixed::_clone(const RobotPtr newRobot, const VisualizationNodePtr visualizationModel, const CollisionModelPtr collisionModel, CollisionCheckerPtr colChecker, float scaling) { ReadLockPtr lock = getRobot()->getReadLock(); RobotNodePtr result; Physics p = physics.scale(scaling); if (optionalDHParameter.isSet) { result.reset(new RobotNodeFixed(newRobot,name,optionalDHParameter.aMM()*scaling,optionalDHParameter.dMM()*scaling, optionalDHParameter.alphaRadian(), optionalDHParameter.thetaRadian(),visualizationModel,collisionModel,p,colChecker,nodeType)); } else { Eigen::Matrix4f lt = getLocalTransformation(); lt.block(0,3,3,1) *= scaling; result.reset(new RobotNodeFixed(newRobot,name,lt,visualizationModel,collisionModel,p,colChecker,nodeType)); } return result; }