Пример #1
0
        private static UrdfJoint AddCorrectJointType(GameObject linkObject, JointTypes jointType)
        {
            UrdfJoint urdfJoint = null;

            switch (jointType)
            {
                case JointTypes.Fixed:
                    urdfJoint = UrdfJointFixed.Create(linkObject);
                    break;
                case JointTypes.Continuous:
                    urdfJoint = UrdfJointContinuous.Create(linkObject);
                    break;
                case JointTypes.Revolute:
                    urdfJoint = UrdfJointRevolute.Create(linkObject);
                    break;
                case JointTypes.Floating:
                    urdfJoint = UrdfJointFloating.Create(linkObject);
                    break;
                case JointTypes.Prismatic:
                    urdfJoint = UrdfJointPrismatic.Create(linkObject);
                    break;
                case JointTypes.Planar:
                    urdfJoint = UrdfJointPlanar.Create(linkObject);
                    break;
            }

            UnityEngine.Joint unityJoint = linkObject.GetComponent<UnityEngine.Joint>();
            unityJoint.connectedBody = linkObject.transform.parent.gameObject.GetComponent<Rigidbody>();
            unityJoint.autoConfigureConnectedAnchor = true;

            return urdfJoint;
        }
        public static UrdfJoint Create(GameObject linkObject)
        {
            UrdfJointRevolute urdfJoint = linkObject.AddComponent <UrdfJointRevolute>();

            urdfJoint.UnityJoint = linkObject.AddComponent <HingeJoint>();
            urdfJoint.UnityJoint.autoConfigureConnectedAnchor = true;
            ((HingeJoint)urdfJoint.UnityJoint).useLimits      = true;
            linkObject.AddComponent <HingeJointLimitsManager>();

            return(urdfJoint);
        }
Пример #3
0
        public static UrdfJoint Create(GameObject linkObject)
        {
            UrdfJointRevolute urdfJoint = linkObject.AddComponent <UrdfJointRevolute>();

            urdfJoint._jointType = JointTypes.Revolute;
            urdfJoint.UnityJoint = linkObject.AddComponent <HingeJoint>();
            urdfJoint.UnityJoint.autoConfigureConnectedAnchor = true;
            ((HingeJoint)urdfJoint.UnityJoint).useLimits      = true;
            linkObject.AddComponent <HingeJointLimitsManager>();
            // add custom angle calculation
            linkObject.AddComponent <CorrectHingeAngle>();

            return(urdfJoint);
        }
Пример #4
0
        public static UrdfJoint Create(GameObject linkObject)
        {
            UrdfJointRevolute urdfJoint = linkObject.AddComponent <UrdfJointRevolute>();

            #if UNITY_2020_1_OR_NEWER
            urdfJoint.unityJoint           = linkObject.GetComponent <ArticulationBody>();
            urdfJoint.unityJoint.jointType = ArticulationJointType.RevoluteJoint;
#else
            urdfJoint.unityJoint = linkObject.AddComponent <HingeJoint>();
            urdfJoint.unityJoint.autoConfigureConnectedAnchor = true;
            ((HingeJoint)urdfJoint.unityJoint).useLimits      = true;
            linkObject.AddComponent <HingeJointLimitsManager>();
#endif

            return(urdfJoint);
        }
Пример #5
0
        private static UrdfJoint AddCorrectJointType(GameObject linkObject, JointTypes jointType)
        {
            UrdfJoint urdfJoint = null;

            switch (jointType)
            {
            case JointTypes.Fixed:
                urdfJoint = UrdfJointFixed.Synchronize(linkObject);
                break;

            case JointTypes.Continuous:
                urdfJoint = UrdfJointContinuous.Synchronize(linkObject);
                break;

            case JointTypes.Revolute:
                urdfJoint = UrdfJointRevolute.Synchronize(linkObject);
                break;

            case JointTypes.Floating:
                urdfJoint = UrdfJointFloating.Synchronize(linkObject);
                break;

            case JointTypes.Prismatic:
                urdfJoint = UrdfJointPrismatic.Synchronize(linkObject);
                break;

            case JointTypes.Planar:
                urdfJoint = UrdfJointPlanar.Synchronize(linkObject);
                break;
            }
            //SynchTodo: This assignment probably does not break stuff, but is not necessary.
            UnityEngine.Joint unityJoint = linkObject.GetComponent <UnityEngine.Joint>();
            unityJoint.connectedBody = linkObject.transform.parent.gameObject.GetComponent <Rigidbody>();
            unityJoint.autoConfigureConnectedAnchor = true;

            return(urdfJoint);
        }