// Update is called once per frame
    public override void AgentReset()
    {
        for (int i = 0; i < 6; i++)   // initialize robot component
        {
            transform_info component_tr = initial_transform_list[i];

            robot_component_list[i].localPosition = new Vector3(component_tr._position_x, component_tr._position_y, component_tr._position_z);
            robot_component_list[i].localRotation = new Quaternion(component_tr._rot_x, component_tr._rot_y, component_tr._rot_z, component_tr._rot_w);

            //robot_component_list[i].SetPositionAndRotation(new Vector3(component_tr._position_x, component_tr._position_y, component_tr._position_z),
            //                                               new Quaternion(component_tr._rot_x, component_tr._rot_y, component_tr._rot_z, component_tr._rot_w)) ;
        }


        //Item_Object.GetComponent<SpawnObject>().Reset();

        doing_action = false;
        action_count = 0;
    }
Example #2
0
    // Start is called before the first frame update
    public override void InitializeAgent()
    {
        base.InitializeAgent();

        rBody = GetComponent <Rigidbody>();
        string[] name_list     = { "Base", "part1", "part2", "part3", "leftGrip", "RightGrip" }; // name_list for joint
        string[] add_name_list = { "part0", "leftGrip", "RightGrip" };                           // doesn't has hinge_joint
        Parent_Object = this.transform.parent.gameObject;
        parentNewName = Regex.Replace(Parent_Object.name, "[^0-9.]", "");
        epsilon       = 1e-4f;


        for (int i = 0; i <= Reward_MAX; i++)
        {
            reward_count_list.Add(0.0f);
            threshold_list.Add(threshold_value);
        }

        //below method works, its just REALLY slow
        //DirectoryInfo driveInfo = new DirectoryInfo("//143.248.32.61/bml/RobotArmData/");
        //FileInfo[] files = driveInfo.GetFiles("*.*", SearchOption.AllDirectories);
        ////solution to storage problem but very very time consuming
        //long totalByteSize = files.Sum(f => f.Length);
        //print(totalByteSize);
        ////bigger than 75 gb
        //if (totalByteSize > 80530636800)
        //{
        //    pathCounter++;
        //    bool exists = System.IO.Directory.Exists(writePath + pathCounter);

        //    if (!exists)
        //    {
        //        System.IO.Directory.CreateDirectory(writePath + pathCounter);
        //        writePath = writePath + pathCounter;
        //        print("newPath: " + writePath);
        //    }

        //}
        //randProb = UnityEngine.Random.Range(0.00f, 1.00f);
        //print(randProb);
        //curr_prob = randProb;

        int hinge_idx = 0;

        foreach (Transform child in transform)
        {
            for (int i = 0; i < 6; i++)
            {
                string object_name = name_list[i];

                if (child.gameObject.name.Equals(object_name))
                {
                    if (object_name.Equals(add_name_list[1]) || object_name.Equals(add_name_list[2]))
                    {
                        Transform      t      = child.gameObject.transform;
                        transform_info t_info = new transform_info(object_name, t.localPosition.x, t.localPosition.y, t.localPosition.z, t.localRotation.x, t.localRotation.y, t.localRotation.z, t.localRotation.w);

                        robot_component_list.Add(child);
                        initial_transform_list.Add(t_info);
                        break;
                    }
                    else
                    {
                        Transform      t      = child.gameObject.transform;
                        transform_info t_info = new transform_info(object_name, t.localPosition.x, t.localPosition.y, t.localPosition.z, t.localRotation.x, t.localRotation.y, t.localRotation.z, t.localRotation.w);

                        robot_component_list.Add(child);
                        initial_transform_list.Add(t_info);
                        hinge_joints.Add(child.gameObject.GetComponent(typeof(HingeJoint)) as HingeJoint);

                        joint_idx[i] = hinge_idx;
                        hinge_idx   += 1;
                        break;
                    }
                }
                else if (child.gameObject.name.Equals(add_name_list[0]))
                {
                    Transform      t      = child.gameObject.transform;
                    transform_info t_info = new transform_info(object_name, t.localPosition.x, t.localPosition.y, t.localPosition.z, t.localRotation.x, t.localRotation.y, t.localRotation.z, t.localRotation.w);

                    robot_component_list.Add(child);
                    initial_transform_list.Add(t_info);
                    break;
                }
            }
        }

        foreach (Transform child in transform.parent)
        {
            if (child.gameObject.name.Equals("Item"))
            {
                Item_Object = child.gameObject;
            }
            else if (child.gameObject.name.Equals("ground"))
            {
                ground_Object = child.gameObject;
            }
        }

        Item_Object.GetComponent <ObjectVoxelDetection>();
    }
    // Start is called before the first frame update
    public override void InitializeAgent()
    {
        base.InitializeAgent();
        rBody = GetComponent <Rigidbody>();
        string[] name_list      = { "Base", "part1", "part2", "part3", "leftGrip", "RightGrip" }; // name_list for joint
        string[] add_name_list  = { "part0", "leftGrip", "RightGrip" };                           // doesn't has hinge_joint
        float[]  force_rate_arr = { 240, 320, 320, 240, 240, 240 };
        Parent_Object = this.transform.parent.gameObject;
        int hinge_idx = 0;

        foreach (Transform child in transform)
        {
            for (int i = 0; i < 6; i++)
            {
                string object_name = name_list[i];

                if (child.gameObject.name.Equals(object_name))
                {
                    if (object_name.Equals(add_name_list[1]) || object_name.Equals(add_name_list[2]))
                    {
                        Transform      t      = child.gameObject.transform;
                        transform_info t_info = new transform_info(object_name, t.localPosition.x, t.localPosition.y, t.localPosition.z, t.localRotation.x, t.localRotation.y, t.localRotation.z, t.localRotation.w);

                        robot_component_list.Add(child);
                        initial_transform_list.Add(t_info);
                        break;
                    }
                    else
                    {
                        Transform      t      = child.gameObject.transform;
                        transform_info t_info = new transform_info(object_name, t.localPosition.x, t.localPosition.y, t.localPosition.z, t.localRotation.x, t.localRotation.y, t.localRotation.z, t.localRotation.w);

                        robot_component_list.Add(child);
                        initial_transform_list.Add(t_info);
                        hinge_joints.Add(child.gameObject.GetComponent(typeof(HingeJoint)) as HingeJoint);
                        hinge_rate.Add(force_rate_arr[i]);
                        joint_idx[i] = hinge_idx;
                        hinge_idx   += 1;
                        break;
                    }
                }
                else if (child.gameObject.name.Equals(add_name_list[0]))
                {
                    Transform      t      = child.gameObject.transform;
                    transform_info t_info = new transform_info(object_name, t.localPosition.x, t.localPosition.y, t.localPosition.z, t.localRotation.x, t.localRotation.y, t.localRotation.z, t.localRotation.w);

                    robot_component_list.Add(child);
                    initial_transform_list.Add(t_info);
                    break;
                }
            }
        }

        foreach (Transform child in transform.parent)
        {
            if (child.gameObject.name.Equals("Item"))
            {
                Item_Object = child.gameObject;
            }
            else if (child.gameObject.name.Equals("ground"))
            {
                ground_Object = child.gameObject;
            }
        }

        Item_Object.GetComponent <ObjectVoxelDetection>();
    }