cant make Quaternion Slerp work properly

Hi all mates ,

Im mainly work as 3D Artist and need a helping hand with a script code for a personal proyect,

Im very stuck and lost several hours couple days and any help will be apreciate :

Is a little game test in Kinect , and want to rotate an object on a collision with kinect hands (like flight game).I have an issue returning the object to his original rotation like a plane does ,but as much as i read , im not able to make it work and im little lost.

Here is the code:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RotateOnCollision : MonoBehaviour {

    //object to rotate (player)

        public Transform objectToRotate;
        public float rotationInty;
        public float smooth;
        public float speed;
    

       
    
        // Use this for initialization
        void Start () {
    
    
    		
    	}
    	
    	// Update is called once per frame
    	void Update () {
    
            
        }
    
        void recoverPosition()
        {
    
            Debug.Log("void recover");
            objectToRotate.transform.rotation = Quaternion.Slerp(from.rotation, to.rotation, Time.time * speed);
            
            Debug.Log("void recover end");
        }
    
        void FixedUpdate()
        {
    
        }
    
        void OnCollisionStay(Collision col)
        {
            if (col.gameObject.name == "24_Thumb_Right")
            {
                
                
               //rotate y axis
    
                objectToRotate.transform.RotateAround(objectToRotate.transform.position, transform.up, -rotationInty);
    
                
    
                //rotate z axis
    
                
    
                objectToRotate.transform.Rotate(Vector3.forward * Time.deltaTime * smooth);
    
                
            }
    
            
    
        }
        void OnCollisionExit(Collision col)
        {
            if (col.gameObject.name == "24_Thumb_Right")
            {
                print("No longer in contact with " + col.transform.name);
    
                recoverPosition();
    
               
                
            }
    
        }
    
    }

Thanks in advance because sure im making lot of dumb code , lol .

@phygitalmadhouse

I think this should work but I am not absolutely sure what objectToRotate is but on Start I save the objects original rotation. Hope it works out.

using UnityEngine;

public class RotateOnCollision : MonoBehaviour {
    //Object to rotate (player)
    public Transform objectToRotate;
    public float rotationInty;
    public float smooth;
    public float speed;

    Vector3 objectsOriginalPosition;
    Quaternion objectsOriginalRotation;

    void Start()
    {
        objectsOriginalRotation = objectToRotate.transform.rotation;
    }

    void RecoverPosition()
    {
        Debug.Log("void recover");
        objectToRotate.transform.rotation = Quaternion.Slerp(objectToRotate.rotation, objectsOriginalRotation, Time.deltaTime * speed);
        Debug.Log("void recover end");
    }

    void OnCollisionStay(Collision col)
    {
        if (col.gameObject.name == "24_Thumb_Right")
        {
            //rotate y axis
            objectToRotate.transform.RotateAround(objectToRotate.transform.position, transform.up, -rotationInty);

            //rotate z axis
            objectToRotate.transform.Rotate(Vector3.forward * Time.deltaTime * smooth);
        }
    }

    void OnCollisionExit(Collision col)
    {
        if (col.gameObject.name == "24_Thumb_Right")
        {
            print("No longer in contact with " + col.transform.name);
            RecoverPosition();
        }
    }
}