// Use this for initialization
 void Start()
 {
     experimentController = GameObject.Find("ExperimentController");
     fader        = experimentController.GetComponent <Fader>();
     dataLogger   = experimentController.GetComponent <ExperimentDataLogger>();
     targetObject = GameObject.FindGameObjectWithTag("targetObject");
     UR5_Target   = GameObject.Find("UR5-Target");
 }
    void OnTriggerEnter(Collider other)
    {
        compoundObstacleHandler = gameObject.GetComponentInParent <CollisionOnCompoundObstacle>();
        experimentLogger        = experimentController.GetComponent <ExperimentDataLogger>();

        if (other.gameObject.CompareTag("targetObject"))                           //Collision with grasped object
        {
            if (compoundObstacleHandler != null)                                   //compound obstacle
            {
                if (compoundObstacleHandler.GetCollisionsWithGraspedObject() == 0) // only the first enter causes a collision count
                {
                    UpdateGlobalErrorCount(other.name);
                }
                experimentLogger.SetColliding(true);
                compoundObstacleHandler.IncreaseCollisionsWithGraspedObject();
            }
            else   // simple obstacle
            {
                graspedObjectIsCollidingWithObstacle = true;
                UpdateGlobalErrorCount(other.name);
                experimentLogger.SetColliding(true);
            }
            if (visualizeCollisions)
            {
                rend.material.color = Color.red;
            }
        }
        else if (other.gameObject.CompareTag("gripper"))                     //Collision with robot
        {
            if (compoundObstacleHandler != null)                             //compound obstacle
            {
                if (compoundObstacleHandler.GetCollisionsWithGripper() == 0) // only the first enter causes a collision count
                {
                    if (experimentLogger.IsGrabbed())
                    {
                        UpdateGripperCollisionCount(other.name);
                    }
                }
                experimentLogger.SetColliding(true);
                compoundObstacleHandler.IncreaseCollisionsWithGripper();
            }
            else      //simple obstacle
            {
                {
                    if (gripperCollisionCount == 0)
                    {
                        if (experimentLogger.IsGrabbed())
                        {
                            UpdateGripperCollisionCount(other.name);    //causes counting collision
                        }
                    }
                    gripperCollisionCount++;
                    experimentLogger.SetColliding(true);    //causes haptic feedback
                }
            }
        }
    }
 // Use this for initialization
 void Start()
 {
     closestDistance = float.MaxValue;
     closestObject   = this.transform.gameObject;
     //accuracyList = new List<KeyValuePair<float, bool> >();
     accuracyList = new List <AccuracyFrame>();
     //	distanceList = new List<float>();
     //	collisionList = new List<bool>();
     dataLogger = GameObject.Find("ExperimentController").GetComponent <ExperimentDataLogger>();
 }
示例#4
0
    public void AddCollision_gripper(Vector3 pos, string other)
    {
        //Debug.Log("adding gripper collision");
        StampedCollision collision = new StampedCollision();

        collision.position     = pos;
        collision.other        = other;
        collision.timeInMillis = ExperimentDataLogger.CalculateCurrentTimeStamp();
        collisionList_gripper.Add(collision);
        //Debug.Log(collisionList_gripper.Count);
    }
    void Update()
    {
        if (recording)
        {
            StampedPose pose = new StampedPose();

            pose.position     = transform.position;
            pose.rotation     = transform.rotation;
            pose.euler        = transform.rotation.eulerAngles;
            pose.forward      = transform.forward;
            pose.timeInMillis = ExperimentDataLogger.CalculateCurrentTimeStamp();

            poseList.Add(pose);
        }
    }
 // Update is called once per frame
 void Update()
 {
     CheckDistance[] distances = GetComponentsInChildren <CheckDistance> ();
     foreach (CheckDistance dist in distances)
     {
         if (dist.GetDistanceApproximatedBetweenSurfaces() < closestDistance)
         {
             if (dist.transform.gameObject != closestObject)
             {
                 if (closestObject.GetComponent <HighlightObject> () != null)
                 {
                     closestObject.GetComponent <HighlightObject> ().SetHighlighted(false);
                 }
                 closestObject = dist.transform.gameObject;
                 //closestObject.GetComponent<HighlightObject> ().SetHighlighted (true);
                 //Debug.Log ("found closer object: "+closestObject.name);
             }
             closestDistance = dist.GetDistanceApproximatedBetweenSurfaces();
         }
         closestDistance = closestObject.GetComponent <CheckDistance> ().GetDistanceApproximatedBetweenSurfaces();
         //Debug.Log (closestDistance);
     }
     if (recording)
     {
         //bool colliding = GameObject.FindGameObjectWithTag ("targetObject").GetComponent<CheckForCollision> ().IsColliding ();
         //accuracyList.Add(new KeyValuePair<float, bool>(closestDistance, colliding));
         AccuracyFrame af = new AccuracyFrame();
         af.distance    = closestDistance;
         af.isColliding = dataLogger.IsColliding();
         af.timestamp   = ExperimentDataLogger.CalculateCurrentTimeStamp();
         accuracyList.Add(af);
         //accuracyList.Add(new KeyValuePair<float, bool>(closestDistance, dataLogger.IsColliding()));
         //distanceList.Add (closestDistance);
         //collisionList.Add (closestObject.GetComponent<Collider>().)
         // TODO: mark collision
     }
 }
示例#7
0
 public void UpdateStopTime()
 {
     timeStamp_stop = ExperimentDataLogger.CalculateCurrentTimeStamp();
 }