diff --git a/README.md b/README.md index ac1c7328..d0b66bb2 100644 --- a/README.md +++ b/README.md @@ -10,15 +10,28 @@ This is a central repository for tools, tutorials, resources, and documentation Simulation plays an important role in robotics development, and we’re here to ensure that roboticists can use Unity for these simulations. We're starting off with a set of tools to make it easier to use Unity with existing ROS-based workflows. Try out some of our samples below to get started quickly. -## Getting Started with Unity Robotics +## Getting Started +### [Quick Installation Instructions](tutorials/quick_setup.md) + +Brief steps on installing the Unity Robotics packages. + +### [Pick-and-Place Demo](tutorials/pick_and_place/README.md) + +A complete end-to-end demonstration, including how to set up the Unity environment, how to import a robot from URDF, and how to set up two-way communication with ROS for control. + +### [**New**][Pose Estimation Demo](tutorials/pose_estimation/README.md) + +A complete end-to-end demonstration, in which we collect training data in Unity, and use that data to train a deep neural network to predict the pose of a cube. This model is then deployed in a simulated robotic pick-and-place task. + +### [Articulations Robot Demo](https://github.com/Unity-Technologies/articulations-robot-demo) + +A robot simulation demonstrating Unity's new physics solver (no ROS dependency). +## Documentation | Tutorial | Description | |---|---| -| [Quick Installation Instructions](tutorials/quick_setup.md) | Brief steps on installing the Unity Robotics packages | -| [Pick-and-Place Demo](tutorials/pick_and_place/README.md) | A complete end-to-end demonstration, including how to set up the Unity environment, how to import a robot from URDF, and how to set up two-way communication with ROS for control | | [ROS–Unity Integration](tutorials/ros_unity_integration/README.md) | A set of component-level tutorials showing how to set up communication between ROS and Unity | | [URDF Importer](tutorials/urdf_importer/urdf_tutorial.md) | Steps on using the Unity package for loading [URDF](http://wiki.ros.org/urdf) files | -| [Articulations Robot Demo](https://github.com/Unity-Technologies/articulations-robot-demo) | A robot simulation demonstrating Unity's new physics solver (no ROS dependency) ## Component Repos @@ -66,4 +79,4 @@ For general questions, feedback, or feature requests, connect directly with the For bugs or other issues, please file a GitHub issue and the Robotics team will investigate the issue as soon as possible. ## License -[Apache License 2.0](LICENSE) \ No newline at end of file +[Apache License 2.0](LICENSE) diff --git a/tutorials/pose_estimation/.gitignore b/tutorials/pose_estimation/.gitignore new file mode 100644 index 00000000..066e8cd4 --- /dev/null +++ b/tutorials/pose_estimation/.gitignore @@ -0,0 +1,7 @@ +*.DS_Store +*.vsconfig +ROS/src/robotiq +ROS/src/universal_robot +ROS/src/ros_tcp_endpoint +ROS/src/moveit_msgs +ROS/src/ur3_moveit/models/ \ No newline at end of file diff --git a/tutorials/pose_estimation/Documentation/0_ros_setup.md b/tutorials/pose_estimation/Documentation/0_ros_setup.md new file mode 100644 index 00000000..f968bfdc --- /dev/null +++ b/tutorials/pose_estimation/Documentation/0_ros_setup.md @@ -0,0 +1,67 @@ +# Pose-Estimation-Demo Tutorial: Part 0 + +This page provides steps on how to manually set up a catkin workspace for the Pose Estimation tutorial. + +1. Navigate to the `pose_estimation/` directory of this downloaded repository. This directory will be used as the ROS catkin workspace. + +2. Copy or download this directory to your ROS operating system if you are doing ROS operations in another machine, VM, or container. + +3. If the following packages are not already installed on your ROS machine, run the following commands to install them: + +```bash +sudo apt-get update && sudo apt-get upgrade +sudo apt-get install python3-pip ros-noetic-robot-state-publisher ros-noetic-moveit ros-noetic-rosbridge-suite ros-noetic-joy ros-noetic-ros-control ros-noetic-ros-controllers ros-noetic-tf* ros-noetic-gazebo-ros-pkgs ros-noetic-joint-state-publisher +sudo pip3 install rospkg numpy jsonpickle scipy easydict torch==1.7.1+cu101 torchvision==0.8.2+cu101 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html +``` + +> Note: If you encounter errors installing Pytorch via the above `pip3` command, try the following instead: +> ```bash +> sudo pip3 install rospkg numpy jsonpickle scipy easydict torch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html +> ``` + + +Most of the ROS setup has been provided via the `ur3_moveit` package. This section will describe the provided files. + +4. If you have not already built and sourced the ROS workspace since importing the new ROS packages, navigate to your ROS workplace, and run: + +```bash +catkin_make +source devel/setup.bash +``` + +Ensure there are no unexpected errors. + +The ROS parameters will need to be set to your configuration in order to allow the server endpoint to fetch values for the TCP connection. + +5. Navigate to your ROS workspace (e.g. `~/catkin_ws`). Assign the ROS IP in the `params.yaml` file as follows: + +```bash +echo "ROS_IP: $(hostname -I)" > src/ur3_moveit/config/params.yaml +``` + +>Note: You can also manually assign this value by navigating to the `src/ur3_moveit/config/params.yaml` file and opening it for editing. +>```yaml +>ROS_IP: +>``` +>e.g. +>```yaml +>ROS_IP: 10.0.0.250 +>``` + +> Note: Learn more about the server endpoint and ROS parameters [here](https://github.com/Unity-Technologies/Unity-Robotics-Hub/blob/main/tutorials/ros_unity_integration/server_endpoint.md). + +This YAML file is a rosparam set from the launch files provided for this tutorial, which has been copied below for reference. Additionally, the `server_endpoint`, `pose estimation`, and `mover` nodes are launched from this file. + +```xml + + + ' + + + + +``` + +>Note: The launch files for this project are available in the package's launch directory, i.e. `src/ur3_moveit/launch/`. + +The ROS workspace is now ready to accept commands! Return to [Part 4: Set up the Unity side](4_pick_and_place.md#step-3) to continue the tutorial. diff --git a/tutorials/pose_estimation/Documentation/1_set_up_the_scene.md b/tutorials/pose_estimation/Documentation/1_set_up_the_scene.md new file mode 100644 index 00000000..98200ec0 --- /dev/null +++ b/tutorials/pose_estimation/Documentation/1_set_up_the_scene.md @@ -0,0 +1,189 @@ +# Pose Estimation Demo: Part 1 + +In this first part of the tutorial, we will start by downloading and installing the Unity Editor. We will install our project's dependencies: the Perception, URDF, and TCP Connector packages. We will then use a set of provided prefabs to easily prepare a simulated environment containing a table, a cube, and a working robot arm. + + +**Table of Contents** + - [Requirements](#reqs) + - [Create a New Project](#step-1) + - [Download the Perception, the URDF and the TCP connector Packages](#step-2) + - [Setup the Ground Truth Render Feature](#step-3) + - [Setup the Scene](#step-4) + +--- + +### Requirements + +To follow this tutorial you need to **clone** this repository even if you want to create your Unity project from scratch. + + + > Note For Windows users: You need to have a software enabling you to run bash files. One option is to download [GIT](https://git-scm.com/downloads). During installation of GIT, add GIT Bash to windows context menu by selecting its option. After installation, right click in your folder, and select [GIT Bash Here](Images/0_GIT_installed.png). + +1. Open a terminal and put yourself where you want to host the repository. +```bash +git clone https://github.com/Unity-Technologies/Unity-Robotics-Hub.git +``` + +Then we need to be in the `Unity-Robotics-Hub/tutorials/pose_estimation` folder and generate the contents of the `universal_robot`, `moveit_msgs`, `ros_tcp_endpoint`, and the `robotiq` folders. +```bash +cd Unity-Robotics-Hub/tutorials/pose_estimation +./submodule.sh +``` + +2. [Install Unity `2020.2.*`.](install_unity.md) + + +### Create a New Project +When you first run Unity, you will be asked to open an existing project, or create a new one. + +1. Open Unity and create a new project using the **Universal Render Pipeline**. Name your new project _**Pose Estimation Tutorial**_, and specify a desired location as shown below. + +

+ +

+ +### Download the Perception, the URDF and the TCP connector Packages + +Once your new project is created and loaded, you will be presented with the Unity Editor interface. From this point on, whenever we refer to the "editor", we mean the Unity Editor. + +#### How to install packages +We will need to download and install several packages. In general, packages can be installed in Unity with the following steps: + +- From the top menu bar, open _**Window**_ -> _**Package Manager**_. As the name suggests, the _**Package Manager**_ is where you can download new packages, update or remove existing ones, and access a variety of information and additional actions for each package. + +- Click on the _**+**_ sign at the top-left corner of the _**Package Manager**_ window and then choose the option _**Add package from git URL...**_. + +- Enter the package address and click _**Add**_. It will take some time for the manager to download and import the package. + +Installing the different packages may take some time (few minutes). + +

+ +

+ + +#### Install Dependencies +Install the following packages with the provided git URLs: + +1. [Perception package](https://github.com/Unity-Technologies/com.unity.perception) - `com.unity.perception@0.7.0-preview.1` + * This will help us collect training data for our machine learning model. + +2. [URDF Importer package](https://github.com/Unity-Technologies/URDF-Importer) - `https://github.com/Unity-Technologies/URDF-Importer.git#v0.1.2` + * This package will help us import a robot into our scene from a file in the [Unified Robot Description Format (URDF)](http://wiki.ros.org/urdf). + +3. [TCP Connector package](https://github.com/Unity-Technologies/ROS-TCP-Connector) - `https://github.com/Unity-Technologies/ROS-TCP-Connector.git#v0.1.2` + * This package will enable a connection between ROS and Unity. + +>Note: If you encounter a Package Manager issue, check the [Troubleshooting Guide](troubleshooting.md) for potential solutions. + +### Set up Ground Truth Render Feature + +The Hierarchy, Scene View, Game View, Play/Pause/Step toolbar, Inspector, Project, and Console windows of the Unity Editor have been highlighted below for reference, based on the default layout. Custom Unity Editor layouts may vary slightly. A top menu bar option is available to re-open any of these windows: Window > General. + +

+ +

+ + +The perception packages relies on a "ground truth render feature" to save out labeled images as training data. You don't need to worry about the details, but follow the steps below to add this component: + +1. The _**Project**_ tab contains a search bar; use it to find the file named `ForwardRenderer`, and click on the file named `ForwardRenderer.asset` as shown below: + +

+ +

+ +2. Click on the found file to select it. Then, from the _**Inspector**_ tab of the editor, click on the _**Add Renderer Feature**_ button, and select _**Ground Truth Renderer Feature**_ from the dropdown menu: + +

+ +

+ + +### Set up the Scene + +#### The Scene +Simply put in Unity, a `Scene` contains any object that exists in the world. This world can be a game, or in this case, a data-collection-oriented simulation. Every new project contains a Scene named SampleScene, which is automatically opened when the project is created. This Scene comes with several objects and settings that we do not need, so let's create a new one. + +1. In the _**Project**_ tab, right-click on the `Assets > Scenes` folder and click _**Create -> Scene**_. Name this new Scene `TutorialPoseEstimation` and double-click on it to open it. + +The _**Hierarchy**_ tab of the editor displays all the Scenes currently loaded, and all the objects currently present in each loaded Scene, as shown below: +

+ +

+ +As seen above, the new Scene already contains a camera (`Main Camera`) and a light (`Directional Light`). We will now modify the camera's field of view and position to prepare it for the tutorial. + +2. Still in the _**Inspector**_ tab of the `Main Camera`, modify the camera's `Position` and `Rotation` to match the values shown below. This orients the camera so that it will have a good view of the objects we are about to add to the scene. + +

+ +

+ +3. Click on `Directional Light` and in the _**Inspector**_ tab, modify the light's `Position` and `Rotation` to match the screenshot below. + +

+ +

+ +#### Adding Tutorial Files +Now it is time to add some more objects to our scene. Before doing so, we need to import some folders containing the required assets. + +4. Download [TutorialAssets.zip](https://github.com/Unity-Technologies/Unity-Robotics-Hub/releases/download/Pose-Estimation/TutorialAssets.zip), and unzip it. It should contain the following subfolders: `Materials`, `Prefabs`, `RosMessages`, `Scripts`, `URDFs`. + +5. Drag and Drop the `TutorialAssets` folder onto the `Assets` folder in the _**Project**_ tab. + +Your `Assets` folder should like this: + +

+ +

+ +#### Using Prefabs +Unity’s [Prefab](https://docs.unity3d.com/Manual/Prefabs.html) system allows you to create, configure, and store a **GameObject** complete with all its components, property values, and child **GameObjects** as a reusable **Asset**. It is a convenient way to store complex objects. + +A prefab is just a file, and you can easily create an instance of the object in the scene from a prefab by dragging it into the _**Hierarchy panel**_. + +For your convenience, we have provided prefabs for most of the components of the scene (the cube, goal, table, and floor). + +6. In the _**Project**_ tab, go to `Assets > TutorialAssets > Prefabs > Part1` and drag and drop the `Cube` prefab inside the _**Hierarchy panel**_. + +7. Repeat the action with the `Goal`, `Table` and the `Floor`. + + +

+ +

+ +>Note: If you encounter an issue with the imported prefab materials, check the [Troubleshooting Guide](troubleshooting.md) for potential solutions. + + +#### Importing the Robot +Finally we will add the robot and the URDF files in order to import the UR3 Robot. + +8. In the _**Project**_ tab, go to `Assets > TutorialAssets > URDFs > ur3_with_gripper` and right click on the `ur3_with_gripper.urdf` file and select `Import Robot From Selected URDF file`. A window will pop up, keep the default **Y Axis** type in the Import menu and the **Mesh Decomposer** to `VHACD`. Then, click Import URDF. These set of actions are showed in the following video. + +>Note Unity uses a left-handed coordinate system in which the y-axis points up. However, many robotics packages use a right-handed coordinate system in which the z-axis or x-axis points up. For this reason, it is important to pay attention to the coordinate system when importing URDF files or interfacing with other robotics software. + +>Note: VHACD algorithm produces higher quality convex hull for collision detection than the default algorithm. + +

+ +

+ +>Note: If you encounter an issue with importing the robot, check the [Troubleshooting Guide](troubleshooting.md) for potential solutions. + +#### Setting up the Robot + +9. Select the `ur3_with_gripper` GameObject and in the _**Inspector**_ view, go to the `Controller` script and set the `Stiffness` to **10000**, the `Damping` to **1000** and the `Force Limit` to **1000**. These are physics properties that control how the robot moves. + +10. In the _**Hierarchy**_ tab, select the `ur3_with_gripper` GameObject and click on the arrow on the left, then click on the arrow on the left of `world`, then on `base_link`. In the `Articulation Body` component, toggle on `Immovable` for the `base link`. This will fix the robot base to its current position. + +

+ +

+ + +### Proceed to [Part 2](2_set_up_the_data_collection_scene.md). + + diff --git a/tutorials/pose_estimation/Documentation/2_set_up_the_data_collection_scene.md b/tutorials/pose_estimation/Documentation/2_set_up_the_data_collection_scene.md new file mode 100644 index 00000000..5bdb6b40 --- /dev/null +++ b/tutorials/pose_estimation/Documentation/2_set_up_the_data_collection_scene.md @@ -0,0 +1,288 @@ +# Pose Estimation Demo: Part 2 + +In [Part 1](1_set_up_the_scene.md) of the tutorial, we learned: +* How to create a Unity Scene +* How to use the Package Manager to download and install Unity packages +* How to move and rotate objects in the scene +* How to instantiate Game Objects with Prefabs +* How to import a robot from a URDF file + +You should now have a table, a cube, a camera, and a robot arm in your scene. In this part we will prepare the scene for data collection with the Perception package. + +

+ +

+ +**Table of Contents** + - [Equipping the Camera for Data Collection](#step-1) + - [Equipping the Cube for Data Collection](#step-2) + - [Add and set up randomizers](#step-3) + +--- + +### Equipping the Camera for Data Collection + +You need to have a fixed aspect ratio so that you are sure to have the same size of images you have when you collect the data. This matters as we have trained our Deep Learning model on it and during the pick-and-place task we will take a screenshot of the game view to feed to the model. This screenshot needs to also have the same resolution than the images collected during the training. + +1. Select the `Game` view and select `Free Aspect`. Then select the **+**, with the message `Add new item` on it if you put your mouse over the + sign. For the Width select `650` and for the Height select `400`. A gif below shows you how to do it. + +

+ +

+ +We need to add a few components to our camera in order to equip it for synthetic data generation. + +2. Select the `Main Camera` GameObject in the _**Hierarchy**_ tab and in the _**Inspector**_ tab, click on _**Add Component**_. + +3. Start typing `Perception Camera` in the search bar that appears, until the `Perception Camera` script is found, with a **#** icon to the left. + +4. Click on this script to add it as a component. Your camera is now a `Perception` camera. + +5. Go to `Edit > Project Settings > Editor` and uncheck `Asynchronous Shader Compilation`. + +In the Inspector view for the Perception Camera component, the list of Camera Labelers is currently empty, as you can see with `List is Empty`. For each type of ground-truth you wish to generate alongside your captured frames, you will need to add a corresponding Camera Labeler to this list. In our project we want to extract the position and orientation of an object, so we will use the `BoudingBox3DLabeler`. + +There are several other types of labelers available, and you can even write your own. If you want more information on labelers, you can consult the [Perception package documentation](https://github.com/Unity-Technologies/com.unity.perception). + +6. In the _**Inspector**_ tab, in the `Perception Camera` script, click on the _**+**_ button at the bottom right corner of the `List is Empty` field, and select `BoundingBox3DLabeler`. Once applied, the labeler will highlight the edges of the labeled `GameObjects`. Don't worry, this highlighting won't show up in the image data we collect, it is just there to help us visualize the labeler. + +Once you add the labeler, the Inspector view of the Perception Camera component will look like this: + +

+ +

+ + +### Equipping the Cube for Data Collection + +Our work above prepares us to collect RGB images from the camera and some associated 3D bounding box(es) for objects in our scene. However, we still need to specify _which_ objects we'd like to collect poses for. In this tutorial, we will only collect the pose of the cube, but you can add more objects if you'd like. + +You will notice that the `BoundingBox3DLabeler` component has a field named `Id Label Config`. The label configuration we link here will determine which object poses get saved in our dataset. + +1. In the _**Project**_ tab, right-click the `Assets` folder, then click `Create -> Perception -> Id Label Config`. + +This will create a new asset file named `IdLabelConfig` inside the `Assets` folder. + +Now that you have created your label configuration, we need to assign them to the labeler that you previously added to your `Perception Camera` component. + +2. Select the `Main Camera` object from the _**Hierarchy**_ tab, and in the _**Inspector**_ tab, assign the newly created `IdLabelConfig` to the `IdLabelConfig`. To do so, you can either drag and drop the former into the corresponding fields for the label, or click on the small circular button in front of the `Id Label Config field`, which brings up an asset selection window filtered to only show compatible assets. + +The `Perception Camera` component will now look like the image below: + +

+ +

+ +Now we need to assign the same `IdLabelConfig` object to the cube, since it is the pose of the cube we wish to collect. + +3. Select the `Cube` GameObject and in the _**Inspector**_ tab, click on the _**Add Component**_ button. + +4. Start typing `Labeling` in the search bar that appears, until the `Labeling` script is found, with a **#** icon to the left and double click on it. + +5. Press the **Add New Label** button and change `New Label` to `cube_position`. Then, click on `Add to Label Config...` and below `Other Label Configs in Project` there should be `IdLabelConfig`. Click on `Add Label` and then press the red X to close the window. + +The _**Inspector**_ view of the `Cube` should look like the following: + +

+ +

+ + +### Add and setup randomizers + +#### Domain Randomization +We will be collecting training data from a simulation, but most real perception use-cases occur in the real world. +To train a model to be robust enough to generalize to the real domain, we rely on a technique called [Domain Randomization](https://arxiv.org/pdf/1703.06907.pdf). Instead of training a model in a single, fixed environment, we _randomize_ aspects of the environment during training in order to introduce sufficient variation into the generated data. This forces the machine learning model to handle many small visual variations, making it more robust. + +In this tutorial, we will randomize the position and the orientation of the cube on the table, and also the color, intensity, and position of the light. Note that the Randomizers in the Perception package can be extended to many other aspects of the environment as well. + + +#### The Scenario +To start randomizing your simulation, you will first need to add a **Scenario** to your scene. Scenarios control the execution flow of your simulation by coordinating all Randomizer components added to them. If you want to know more about it, you can go see [this tutorial](https://github.com/Unity-Technologies/com.unity.perception/blob/master/com.unity.perception/Documentation~/Tutorial/Phase1.md#step-5-set-up-background-randomizers). There are several pre-built Randomizers provided by the Perception package, but they don't fit our specific problem. Fortunately, the Perception package also allows one to write [custom randomizers](https://github.com/Unity-Technologies/com.unity.perception/blob/master/com.unity.perception/Documentation~/Tutorial/Phase2.md), which we will do here. + + +1. In the _**Hierarchy**_, select the **+** and `Create Empty`. Rename this GameObject `Simulation Scenario`. + +2. Select the `Simulation Scenario` GameObject and in the _**Inspector**_ tab, click on the _**Add Component**_ button. Start typing `Fixed Length Scenario` in the search bar that appears, until the `Fixed Length Scenario` script is found, with a **#** icon to the left. Then double click on it. + +Each Scenario executes a number of Iterations, and each Iteration carries on for a number of frames. These are timing elements you can leverage in order to customize your Scenarios and the timing of your randomizations. + + +#### Writing our Custom Object Rotation Randomizer +Each new Randomizer requires two C# scripts: a **Randomizer** and **RandomizerTag**. The **Randomizer** will go on the Scenario to orchestrate the randomization. The corresponding **RandomizerTag** is added to any GameObject(s) we want to _apply_ the randomization to. + +First, we will write a randomizer to randomly rotate the cube around its y-axis each iteration. + +3. In the _**Project**_ tab, right-click on the **Scripts** folder and select `Create -> C# Script`. Name your new script file `YRotationRandomizer`. + +4. Create another script and name it `YRotationRandomizerTag`. + +5. Double-click `YRotationRandomizer.cs` to open it in _**Visual Studio**_. + +Note that while _**Visual Studio**_ is the default option, you can choose any text editor of your choice. You can change this setting in _**Preferences -> External Tools -> External Script Editor**_. + +6. Remove the contents of the class and copy/paste the code below: + +``` +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using UnityEngine.Perception.Randomization.Parameters; +using UnityEngine.Perception.Randomization.Randomizers; + +[Serializable] +[AddRandomizerMenu("Perception/Y Rotation Randomizer")] +public class YRotationRandomizer : InferenceRandomizer +{ + public FloatParameter random; // in range (0, 1) + + protected override void OnIterationStart() + { + OnCustomIteration(); + } + + public override void OnCustomIteration() + { + /* Runs at the start of every iteration. */ + + IEnumerable tags = tagManager.Query(); + foreach (YRotationRandomizerTag tag in tags) + { + float yRotation = random.Sample() * 360.0f; + + // sets rotation + tag.SetYRotation(yRotation); + } + } +} + +``` + +The purpose of this piece of code is to rotate a set of objects randomly about their y-axes every iteration. In Unity, the y-axis points "up". + +>Note: If you look at the Console tab of the editor now, you will see an error regarding `YRotationRandomizerTag` not being found. This is to be expected, since we have not yet created this class; the error will go away once we create the class later. + +Let's go through the code above and understand each part: +* Near the top, you'll notice the line `[AddRandomizerMenu("Perception/Y Rotation Randomizer")]`. This gives the name we see in the UI when we add the randomizer in the `Fixed Length Scenario`. +* The `YRotationRandomizer` class extends `Randomizer`, which is the base class for all Randomizers that can be added to a Scenario. This base class provides a plethora of useful functions and properties that can help catalyze the process of creating new Randomizers. +* The `FloatParameter` field contains a seeded random number generator. We can set the range, and the distribution of this value in the editor UI. +* The `OnIterationStart()` function is a life-cycle method on all `Randomizer`s. It is called by the scenario every iteration (e.g., once per frame). +* The `OnCustomiteration()` function for responsible of the actions to randomize the Y-axis of the cube. Although you could incorporate the content of the `OnCustomIteration()` function inside the `OnIterationStart()` function, we chose this architecture so that we can call the method reponsible for the Y rotation axis in other scripts. +* The `tagManager` is an object available to every `Randomizer` that can help us find game objects tagged with a given `RandomizerTag`. In our case, we query the `tagManager` to gather references to all the objects with a `YRotationRandomizerTag` on them. +* We then loop through these `tags` to rotate each object having one: + * `random.Sample()` gives us a random float between 0 and 1, which we multiply by 360 to convert to degrees. + * We then rotate this object using the `SetYRotation()` method the tag, which we will write in a moment. + +7. Open `YRotationRandomizerTag.cs` and replace its contents with the code below: + +``` +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Perception.Randomization.Randomizers; + +public class YRotationRandomizerTag : RandomizerTag +{ + private Vector3 originalRotation; + + private void Start() + { + originalRotation = transform.eulerAngles; + } + + public void SetYRotation(float yRotation) + { + transform.eulerAngles = new Vector3(originalRotation.x, yRotation, originalRotation.z); + } +} + +``` +The `Start` method is automatically called once, at runtime, before the first frame. Here, we use the `Start` method to save this object's original rotation in a variable. When `SetYRotation` is called by the Randomizer every iteration, it updates the rotation around the y-axis, but keeps the x and z components of the rotation the same. + + +#### Adding our Custom Object Rotation Randomizer + +If you return to your list of Randomizers in the Inspector view of SimulationScenario, you can now add this new Randomizer. + +8. Add `YRotationRandomizer` to the list of Randomizers in SimulationScenario (see gif after the next action). You will notice that you can adjust the distribution here, as mentioned above. + +

+ +

+ +9. Select the `Cube` GameObject and in the _**Inspector**_ tab, add a `YRotationRandomizerTag` component. + +

+ +

+ + +10. Run the simulation and inspect how the cube now switches between different orientations. You can pause the simulation and then use the step button (to the right of the pause button) to move the simulation one frame forward and clearly see the variation of the cube's y-rotation. You should see something similar to the following. + +

+ +

+ +#### Randomizing Object Positions + +It is great that we can now rotate the cube, but we also want to move it around the table. However, not all positions on the table are valid - we also need it to be within the robot arm's reach. + +To save time, we have provided a pre-written custom randomizer to do this. + +11. Select the `Simulation Scenario` GameObject, and do the following: + * In the _**Inspector**_ tab, on the `Fixed Length Scenario` component, click `Add Randomizer` and start typing `RobotArmObjectPositionRandomizer`. + * Set the `MinRobotReachability` to `0.2` and the `MaxRobotReachability` to `0.4`. + * Under `Plane`, click on the circle and start typing `ObjectPlacementPlane` and then double click on the GameObject that appears. + * Under `base`, you need to drag and drop the base (`ur3_with_gripper/world/base_link/base`) of the robot. + +

+ +

+ +12. Now we need to add the RandomizerTag to the cube. + * Select the `Cube` GameObject and in the _**Inspector**_ tab, click on the _**Add Component**_ button. Start typing `RobotArmObjectPositionRandomizerTag` in the search bar that appears, until the `RobotArmObjectPositionRandomizerTag` script is found, with a **#** icon to the left. Then double click on it. + * Click on the arrow on the left of the `script` icon, and check the property `Must Be Reachable`. + +The `RobotArmObjectPositionRandomizerTag` component should look like the following: + +

+ +

+ +If you press play, you should now see the cube and goal moving around the robot with the cube rotating at each frame. + +

+ +

+ +#### Light Randomizer + +Now we will add the light Randomizer. + +13. Select the `Simulation Scenario` GameObject and in the _**Inspector**_ tab, on the `Fixed Length Scenario` component, click on `Add Randomizer` and start typing `LightRandomizer`. + * For the `Light Intensity Parameter`, for the range parameter set the `Min` to `0.9` and the `Max` to `1.1`. + * For the range parameter of the `Rotation X`, set the `Min` to `40` and the `Max` to `80`. + * For the range parameter of the `Rotation Y`, set the `Min` to `-180` and the `Max` to `180`. + * For the range parameter of the `Red`, `Green` and `Blue` of the `color` parameter, set the `Min` to `0.5`. + +The Randomizer should now look like the following: + +

+ +

+ +14. Now we need to add the RandomizerTag to the light. Select the `Directional Light` GameObject and in the _**Inspector**_ tab, click on the _**Add Component**_ button. Start typing `LightRandomizerTag` in the search bar that appears, until the `LightRandomizerTag` script is found, with a **#** icon to the left. Then double click on it. + +To view this script, you can right click on the three dots are the end of the component and select `Edit Script`. +This randomizer is a bit different from the previous ones as you can see by the line `[RequireComponent(typeof(Light))]` at line 7. This line makes it so that you can only add the `LightRandomizerTag` component to an object that already has a **Light** component attached. This way, the Randomizers that query for this tag can be confident that the found objects have a **Light** component. + +If you press play, you should see the color, direction, and intensity of the lighting now changes with each frame. + +

+ +

+ +### Proceed to [Part 3](3_data_collection_model_training.md). + +### Go back to [Part 1](1_set_up_the_scene.md) diff --git a/tutorials/pose_estimation/Documentation/3_data_collection_model_training.md b/tutorials/pose_estimation/Documentation/3_data_collection_model_training.md new file mode 100644 index 00000000..88af5fa5 --- /dev/null +++ b/tutorials/pose_estimation/Documentation/3_data_collection_model_training.md @@ -0,0 +1,151 @@ +# Pose Estimation Demo: Part 3 + +In [Part 1](1_set_up_the_scene.md) of the tutorial, we learned how to create our scene in the Unity editor. + +In [Part 2](2_set_up_the_data_collection_scene.md) of the tutorial, we learned: +* How to equip the camera for the data collection +* How to equip the cube for the data collection +* How to create your own randomizer +* How to add our custom randomizer + +In this part, we will be collecting a large dataset of RGB images of the scene, and the corresponding pose of the cube. We will then use this data to train a machine learning model to predict the cube's position and rotation from images taken by our camera. We will then be ready to use the trained model for our pick-and-place task in [Part 4](4_pick_and_place.md). + +Steps included in this part of the tutorial: + +**Table of Contents** + - [Collect the Training and Validation Data](#step-1) + - [Train the Deep Learning Model](#step-2) + - [Exercises for the Reader](#exercises-for-the-reader) + +--- + +## Collect the Training and Validation Data + +Now it is time to collect the data: a set of images with the corresponding position and orientation of the cube relative to the camera. + +We need to collect data for the training process and data for the validation one. + +We have chosen a training dataset of 30,000 images and a validation dataset of 3,000 images. + +1. Select the `Simulation Scenario` GameObject and in the _**Inspector**_ tab, in the `Fixed Length Scenario` and in `Constants` set the `Total Iterations` to 30000. + +2. Press play and wait until the simulation is done. It should take a bit of time (~10 min). Once it is done, go to the _**Console**_ tab which is the tag on the right of the _**Project**_ tab. + +You should see something similar to the following: + +

+ +

+ +In my case the data is written to `/Users/jonathan.leban/Library/Application Support/DefaultCompany/SingleCubePoseEstimationProject` but for you the data path will be different. Go to that directory from your terminal. + +You should then see something similar to the following: +

+ +

+ +3. Change this folder's name to `UR3_single_cube_training`. + +4. Now we need to collect the validation dataset. Select the `Simulation Scenario` GameObject and in the _**Inspector**_ tab, in the `Fixed Length Scenario` and in `Constants` set the `Total Iterations` to 3000. + +5. Press play and wait until the simulation is done. Once it is done go to the _**Console**_ tab and go to the directory where the data has been saved. + +6. Change the folder name where this latest data was saved to `UR3_single_cube_validation`. + +7. **(Optional)**: Move the `UR3_single_cube_training` and `UR3_single_cube_validation` folders to a directory of your choice. + + +## Train the Deep Learning Model +Now its time to train our deep learning model! We've provided the model training code for you, but if you'd like to learn more about it - or make your own changes - you can dig into the details [here](../Model). + +This step can take a long time if your computer doesn't have GPU support (~5 days on CPU). Even with a GPU, it can take around ~10 hours. We have provided an already trained model as an alternative to waiting for training to complete. If you would like to use this provided model, you can proceed to [Part 4](4_pick_and_place.md). + +1. Navigate to the `tutorials/pose_estimation/Model` directory. + +### Requirements + +We support two approaches for running the model: Docker (which can run anywhere) or locally with Conda. + +#### Option A: Using Docker +If you would like to run using Docker, you can follow the [Docker steps provided](../Model/documentation/running_on_docker.md) in the model documentation. + + +#### Option B: Using Conda +To run this project locally, you will need to install [Anaconda](https://docs.anaconda.com/anaconda/install/) or [Miniconda](https://docs.conda.io/en/latest/miniconda.html). + +If running locally without Docker, we first need to create a conda virtual environment and install the dependencies for our machine learning model. If you only have access to CPUs, install the dependencies specified in the `environment.yml` file. If your development machine has GPU support, you can choose to use the `environment-gpu.yml` file instead. + +2. In a terminal window, enter the following command to create the environment. Replace `` with an environment name of your choice, e.g. `pose-estimation`: +```bash +conda env create -n -f environment.yml +``` + +Then, you need to activate the conda environment. + +3. Still in the same terminal window, enter the following command: +```bash +conda activate +``` + +### Updating the Model Config + +At the top of the [cli.py](../Model/pose_estimation/cli.py) file in the model code, you can see the documentation for all supported commands. Since typing these in can be laborious, we use a [config.yaml](../Model/config.yaml) file to feed in all these arguments. You can still use the command line arguments if you want - they will override the config. + +There are a few settings specific to your setup that you'll need to change. + +First, we need to specify the path to the folders where your training and validation data are saved: + +4. In the [config.yaml](../Model/config.yaml), under `system`, you need to set the argument `data/root` to the path of the directory containing your data folders. For example, since I put my data (`UR3_single_cube_training` and `UR3_single_cube_validation`) in a folder called `data` in Documents, I set the following: +```bash + data_root: /Users/jonathan.leban/Documents/data +``` + +Second, we need to modify the location where the model is going to be saved: + +5. In the [config.yaml](../Model/config.yaml), under `system`, you need to set the argument `log_dir_system` to the full path to the output folder where your model's results will be saved. For example, I created a new directory called `models` in my Documents, and then set the following: +```bash +log_dir_system: /Users/jonathan.leban/Documents/models +``` + +### Training the model +Now its time to train our deep learning model! + +6. If you are not already in the `tutorials/pose_estimation/Model` directory, navigate there. + +7. Enter the following command to start training: +```bash +python -m pose_estimation.cli train +``` + +>Note (Optional): If you want to override certain training hyperparameters, you can do so with additional arguments on the above command. See the documentation at the top of [cli.py](../Model/pose_estimation/cli.py) for a full list of supported arguments. + +>Note: If the training process ends unexpectedly, check the [Troubleshooting Guide](troubleshooting.md) for potential solutions. + +### Visualizing Training Results with Tensorboard +If you'd like to examine the results of your training run in more detail, see our guide on [viewing the Tensorboard logs](tensorboard.md). + +### Evaluating the Model +Once training has completed, we can also run our model on our validation dataset to measure its performance on data it has never seen before. + +However, first we need to specify a few settings in our config file. + +8. In [config.yaml](../Model/config.yaml), under `checkpoint`, you need to set the argument `log_dir_checkpoint` to the path where you have saved your newly trained model. + +9. If you are not already in the `tutorials/pose_estimation/Model` directory, navigate there. + +10. To start the evaluation run, enter the following command: +```bash +python -m pose_estimation.cli evaluate +``` + +>Note (Optional): To override additional settings on your evaluation run, you can tag on additional arguments to the command above. See the documentation in [cli.py](../Model/pose_estimation/cli.py) for more details. + + +### Exercises for the Reader +**Optional**: If you would like to learn more about randomizers and apply domain randomization to this scene more thoroughly, check out our further exercises for the reader [here](5_more_randomizers.md). + +### Proceed to [Part 4](4_pick_and_place.md). + +### + +### Go back to [Part 2](2_set_up_the_data_collection_scene.md) diff --git a/tutorials/pose_estimation/Documentation/4_pick_and_place.md b/tutorials/pose_estimation/Documentation/4_pick_and_place.md new file mode 100644 index 00000000..f43512be --- /dev/null +++ b/tutorials/pose_estimation/Documentation/4_pick_and_place.md @@ -0,0 +1,249 @@ +# Pose Estimation Demo: Part 4 + + +In [Part 1](1_set_up_the_scene.md) of the tutorial, we learned how to create our scene in the Unity editor. In [Part 2](2_set_up_the_data_collection_scene.md), we set up the scene for data collection. + +In [Part 3](3_data_collection_model_training.md) we have learned: +* How to collect the data +* How to train the deep learning model + +In this part, we will use our trained deep learning model to predict the pose of the cube, and pick it up with our robot arm. + +

+ +

+ +**Table of Contents** + - [Setup](#setup) + - [Adding the Pose Estimation Model](#step-2) + - [Set up the ROS side](#step-3) + - [Set up the Unity side](#step-4) + - [Putting it together](#step-5) + +--- + +### Set up +If you have correctly followed parts 1 and 2, whether or not you choose to use the Unity project given by us or start it from scratch, you should have cloned the repository. + + +>Note: If you cloned the project and forgot to use `--recurse-submodules`, or if any submodule in this directory doesn't have content (e.g. moveit_msgs or ros_tcp_endpoint), you can run the following command to grab the Git submodules. But before you need to be in the `pose_estimation` folder. +>```bash +>cd /PATH/TO/Unity-Robotics-Hub/tutorials/pose_estimation && +>git submodule update --init --recursive +>``` + +Three package dependencies for this project, [Universal Robot](https://github.com/ros-industrial/universal_robot) for the UR3 arm configurations, [Robotiq](https://github.com/ros-industrial/robotiq) for the gripper, and [MoveIt Msgs](https://github.com/ros-planning/moveit_msgs) are large repositories. A bash script has been provided to run a sparse clone to only copy the files required for this tutorial, as well as the [ROS TCP Endpoint](https://github.com/Unity-Technologies/ROS-TCP-Endpoint/). + +1. Open a terminal and go to the directory of the `pose_estimation` folder. Then run: +```bash +./submodule.sh +``` + +In your `pose_estimation` folder, you should have a `ROS` folder. Inside that folder you should have a `src` folder and inside that one 5 folders: `moveit_msgs`, `robotiq`, `ros_tcp_endpoint`, `universal_robot` and `ur3_moveit`. + +### Adding the Pose Estimation Model + +Here you have two options for the model: + +#### Option A: Use Our Pre-trained Model + +1. To save time, you may use the model we have trained. Download this [UR3_single_cube_model.tar](https://github.com/Unity-Technologies/Unity-Robotics-Hub/releases/download/Pose-Estimation/UR3_single_cube_model.tar) file, which contains the pre-trained model weights. + +#### Option B: Use Your Own Model + +2. You can also use the model you have trained in [Part 3](3_data_collection_model_training.md). However, be sure to rename your model `UR3_single_cube_model.tar` as the script that will call the model is expecting this name. + +#### Moving the Model to the ROS Folder + +3. Go inside the `ROS/SRC/ur3_moveit` folder and create a folder called `models`. Then copy your model file (.tar) into it. + +### Set up the ROS side + +>Note: This project has been developed with Python 3 and ROS Noetic. + +The provided ROS files require the following packages to be installed. The following section steps through configuring a Docker container as the ROS workspace for this tutorial. If you would like to manually set up your own ROS workspace with the provided files instead, follow the steps in [Part 0: ROS Setup](0_ros_setup.md) to do so. + +Building this Docker container will install the necessary packages for this tutorial. + +1. Install the [Docker Engine](https://docs.docker.com/engine/install/) if not already installed. Start the Docker daemon. To check if the Docker daemon is running, when you open you Docker application you should see something similar to the following (green dot on the bottom left corner with the word running at the foot of Docker): + +

+ +

+ +2. In the terminal, ensure the current location is at the root of the `pose_estimation` directory. Build the provided ROS Docker image as follows: + +```bash +docker build -t unity-robotics:pose-estimation -f docker/Dockerfile . +``` + +>Note: The provided Dockerfile uses the [ROS Noetic base Image](https://hub.docker.com/_/ros/). Building the image will install the necessary packages as well as copy the [provided ROS packages and submodules](../ROS/) to the container, predownload and cache the [VGG16 model](https://pytorch.org/docs/stable/torchvision/models.html#torchvision.models.vgg16), and build the catkin workspace. + + +3. Start the newly built Docker container: + +```docker +docker run -it --rm -p 10000:10000 -p 5005:5005 unity-robotics:pose-estimation /bin/bash +``` + +When this is complete, it will print: `Successfully tagged unity-robotics:pose-estimation`. This console should open into a bash shell at the ROS workspace root, e.g. `root@8d88ed579657:/catkin_ws#`. + +>Note: If you encounter issues with Docker, check the [Troubleshooting Guide](troubleshooting.md) for potential solutions. + +4. Source your ROS workspace: + +```bash +source devel/setup.bash +``` + +The ROS workspace is now ready to accept commands! + +>Note: The Docker-related files (Dockerfile, bash scripts for setup) are located in `PATH-TO-pose_estimation/docker`. + +--- + +### Set up the Unity side + +If your Pose Estimation Tutorial Unity project is not already open, select and open it from the Unity Hub. + +We will work on the same scene that was created in the [Part 1](1_set_up_the_scene.md) and [Part 2](2_set_up_the_data_collection_scene.md), so if you have not already, complete Parts 1 and 2 to set up the Unity project. + +#### Connecting with ROS + +Prefabs have been provided for the UI elements and trajectory planner for convenience. These are grouped under the parent `ROSObjects` tag. + +1. In the Project tab, go to `Assets > TutorialAssets > Prefabs > Part4` and drag and drop the `ROSObjects` prefab inside the _**Hierarchy**_ panel. + +2. The ROS TCP connection needs to be created. In the top menu bar in the Unity Editor, select `Robotics -> ROS Settings`. Find the IP address of your ROS machine. + * If you are going to run ROS services with the Docker container introduced [above](#step-3), fill `ROS IP Address` and `Override Unity IP` with the loopback IP address `127.0.0.1`. If you will be running ROS services via a non-Dockerized setup, you will most likely want to have the `Override Unity IP` field blank, which will let the Unity IP be determined automatically. + + * If you are **not** going to run ROS services with the Docker container, e.g. a dedicated Linux machine or VM, open a terminal window in this ROS workspace. Set the ROS IP Address field as the output of the following command: + + ```bash + hostname -I + ``` + +3. Ensure that the ROS Port is set to `10000` and the Unity Port is set to `5005`. You can leave the Show HUD box unchecked. This HUD can be helpful for debugging message and service requests with ROS. You may turn this on if you encounter connection issues. + +

+ +

+ +Opening the ROS Settings has created a ROSConnectionPrefab in `Assets/Resources` with the user-input settings. When the static `ROSConnection.instance` is referenced in a script, if a `ROSConnection` instance is not already present, the prefab will be instantiated in the Unity scene, and the connection will begin. + +>Note: While using the ROS Settings menu is the suggested workflow, you may still manually create a GameObject with an attached ROSConnection component. + +The provided script `Assets/TutorialAssets/Scripts/TrajectoryPlanner.cs` contains the logic to invoke the motion planning services, as well as the logic to control the gripper and end effector tool. This has been adapted from the [Pick-and-Place tutorial](https://github.com/Unity-Technologies/Unity-Robotics-Hub/blob/main/tutorials/pick_and_place/3_pick_and_place.md). The component has been added to the ROSObjects/Publisher object. + +In this TrajectoryPlanner script, there are two functions that are defined, but not yet implemented. `InvokePoseEstimationService()` and `PoseEstimationCallback()` will create a [ROS Service](http://wiki.ros.org/Services) Request and manage on the ROS Service Response, respectively. The following steps will provide the code and explanations for these functions. + +4. Open the `TrajectoryPlanner.cs` script in an editor. Find the empty `InvokePoseEstimationService(byte[] imageData)` function definition, starting at line 165. Replace the empty function with the following: + +```csharp +private void InvokePoseEstimationService(byte[] imageData) +{ + uint imageHeight = (uint)renderTexture.height; + uint imageWidth = (uint)renderTexture.width; + + RosMessageTypes.Sensor.Image rosImage = new RosMessageTypes.Sensor.Image(new RosMessageTypes.Std.Header(), imageWidth, imageHeight, "RGBA", isBigEndian, step, imageData); + PoseEstimationServiceRequest poseServiceRequest = new PoseEstimationServiceRequest(rosImage); + ros.SendServiceMessage("pose_estimation_srv", poseServiceRequest, PoseEstimationCallback); +} +``` + +The `InvokePoseEstimationService` function will be called upon pressing the `Pose Estimation` button in the Unity Game view. It takes a screenshot of the scene as an input, and instantiates a new RGBA [sensor_msgs/Image](http://docs.ros.org/en/melodic/api/sensor_msgs/html/msg/Image.html) with the defined dimensions. Finally, this instantiates and sends a new Pose Estimation service request to ROS. + +>Note: The C# scripts for the necessary ROS msg and srv files in this tutorial have been generated via the [ROS-TCP-Connector](https://github.com/Unity-Technologies/ROS-TCP-Connector) and provided in the project's `Assets/TutorialAssets/RosMessages/` directory. + +Next, the function that is called to manage the Pose Estimation service response needs to be implemented. + +5. Still in the TrajectoryPlanner script, find the empty `PoseEstimationCallback(PoseEstimationServiceResponse response)` function definition. Replace the empty function with the following: + +```csharp +void PoseEstimationCallback(PoseEstimationServiceResponse response) +{ + if (response != null) + { + // The position output by the model is the position of the cube relative to the camera so we need to extract its global position + var estimatedPosition = Camera.main.transform.TransformPoint(response.estimated_pose.position.From()); + var estimatedRotation = Camera.main.transform.rotation * response.estimated_pose.orientation.From(); + + PublishJoints(estimatedPosition, estimatedRotation); + + EstimatedPos.text = estimatedPosition.ToString(); + EstimatedRot.text = estimatedRotation.eulerAngles.ToString(); + } + InitializeButton.interactable = true; + RandomizeButton.interactable = true; +} +``` + +This callback is automatically run when the Pose Estimation service response arrives. This function simply converts the incoming pose into UnityEngine types and updates the UI elements accordingly. Once converted, the estimated position and rotation are sent to `PublishJoints`, which will send a formatted request to the MoveIt trajectory planning service. + +>Note: The incoming position and rotation are converted `From`, i.e. Unity's coordinate space, in order to cleanly convert from a `geometry_msgs/Point` and `geometry_msgs/Quaternion` to `UnityEngine.Vector3` and `UnityEngine.Quaternion`, respectively. This is equivalent to creating a `new Vector3(response.estimated_pose.position.x, response.estimated_pose.position.y, response.estimated_pose.position.z)`, and so on. This functionality is provided via the [ROSGeometry](https://github.com/Unity-Technologies/ROS-TCP-Connector/blob/dev/ROSGeometry.md) component of the ROS-TCP-Connector package. + +>Note: The `Randomizer Cube` button calls the `RandomizeCube()` method. This randomizes the position and orientation of the cube, the position of the goal, and the color, intensity, and position of the light. It does this running the Randomizers defined in the `Fixed Length Scenario` of the `Simulation Scenario` GameObject. If you want to learn more about how we modified the Randomizers so that they could be called at inference time, check out the [InferenceRandomizer.cs](../PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/InferenceRandomizer.cs) script. + +Note that the TrajectoryPlanner component shows its member variables in the _**Inspector**_ window, which need to be assigned. + +6. Return to Unity. Select the `ROSObjects/Publisher` GameObject. Assign the `ur3_with_gripper` GameObject to the `Robot` field. Drag and drop the `Cube` GameObject from the _**Hierarchy**_ onto the `Target` Inspector field. Drag and drop the `Goal` to the `Goal` field. Finally, assign the `Simulation Scenario` object to the `Scenario` field. You should see the following: + +

+ +

+ +#### Switching to Inference Mode + +7. On the `Simulation Scenario` GameObject, uncheck the `Fixed Length Scenario` component to disable it, as we are no longer in the Data Collection part. If you want to collect new data in the future, you can always check back on the `Fixed Length Scenario` and uncheck to disable the `ROSObjects`. + +8. On the `Main Camera` GameObject, uncheck the `Perception Camera` script component, since we do not need it anymore. + +Also note that the UI elements have been provided in `ROSObjects/Canvas`, including the Event System that is added on default by Unity. In `ROSObjects/Canvas/ButtonPanel`, the OnClick callbacks have been pre-assigned in the prefab. These buttons set the robot to its upright default position, randomize the cube position and rotation, randomize the target, and call the Pose Estimation service. + + +### Putting it together + +Then, run the following roslaunch in order to start roscore, set the ROS parameters, start the server endpoint, start the Mover Service and Pose Estimation nodes, and launch MoveIt. + +1. In the terminal window of your ROS workspace opened in [Set up the ROS side](#step-3), run the provided launch file: + +```bash +roslaunch ur3_moveit pose_est.launch +``` + +--- + +This launch file also loads all relevant files and starts ROS nodes required for trajectory planning for the UR3 robot (`demo.launch`). The launch files for this project are available in the package's launch directory, i.e. `src/ur3_moveit/launch/`. + +This launch will print various messages to the console, including the set parameters and the nodes launched. The final message should confirm `You can start planning now!`. + +>Note: The launch file may throw errors regarding `[controller_spawner-5] process has died`. These are safe to ignore as long as the final message is `Ready to plan`. This confirmation may take up to a minute to appear. + +

+ +2. Return to Unity, and press Play. + +>Note: If you encounter connection errors such as a `SocketException` or don't see a completed TCP handshake between ROS and Unity in the console window, return to the [Connecting with ROS](#connecting-with-ros) section above to update the ROS Settings and generate the ROSConnectionPrefab. + +>Note: If you encounter a `SocketException` on Ubuntu, check the [Troubleshooting Guide](troubleshooting.md) for potential solutions. + + +Note that the robot arm must be in its default position, i.e. standing upright, to perform Pose Estimation. This is done by simply clicking the `Reset Robot Position` button after each run. + +3. Press the `Pose Estimation` button to send the image to ROS. + +This will grab the current camera view, generate a [sensor_msgs/Image](http://docs.ros.org/en/noetic/api/sensor_msgs/html/msg/Image.html) message, and send a new Pose Estimation Service Response to the ROS node running `pose_estimation_service.py`. This will run the trained model and return a Pose Estimation Service Response containing an estimated pose, which is subsequently converted and sent as a new Mover Service Response to the `mover.py` ROS node. Finally, MoveIt calculates and returns a list of trajectories to Unity, and the poses are executed to pick up and place the cube. + +The target object and empty goal object can be moved around during runtime for different trajectory calculations, or can be randomized using the `Randomize Cube` button. + +>Note: You may encounter a `UserWarning: CUDA initialization: Found no NVIDIA driver on your system.` error upon the first image prediction attempt. This warning can be safely ignored. + +>Note: If you encounter issues with the connection between Unity and ROS, check the [Troubleshooting Guide](troubleshooting.md) for potential solutions. + +You should see the following: +

+ +

+ +**Congrats! You did it!** +### Click here to go back to [Part 3](3_data_collection_model_training.md). diff --git a/tutorials/pose_estimation/Documentation/5_more_randomizers.md b/tutorials/pose_estimation/Documentation/5_more_randomizers.md new file mode 100644 index 00000000..b237b111 --- /dev/null +++ b/tutorials/pose_estimation/Documentation/5_more_randomizers.md @@ -0,0 +1,29 @@ +# Exercises for the Reader + +In the main tutorial, we randomized the position and rotation of the cube. However, the Perception Package supports much more sophisticated environment randomization. In this (optional) section we will create a richer and more varied environment by adding one more randomizer to our scene. + +In addition to the `YRotationRandomizer` and the `RobotArmObjectPositionRandomizer`, we have designed one more randomizer: +* `UniformPoseRandomizer` - Randomizes object's position and rotation relative to a fixed starting pose, over the specified range. We will apply this to the camera, to make our trained model more robust to small inaccuracies in placing the real camera. + +### Randomizing the Camera Pose + +1. Select the `Simulation Scenario` GameObject and in the _**Inspector**_ tab, on the `Fixed Length Scenario` component, click on `Add Randomizer` and start typing `UniformPoseRandomizer`. For the `Random` parameter, set the min value of the Range to `-1`. We do that because we want the change of the position and the rotation in both directions for a given axis. The Randomizer's UI snippet should look like the following: + +

+ +

+ +2. Now we need to add the RandomizerTag to the Camera but you can add it the GameObject you want. Select the `Main Camera` GameObject and in the _**Inspector**_ tab, click on the _**Add Component**_ button. Start typing `UniformPoseRandomizerTag` in the search bar that appears, until the `UniformPoseRandomizerTag` script is found, with a **#** icon to the left. Then double click on it. + +If you press play, you should see the cube moving around the robot and rotate, the color and the intensity of the light changing but also the camera moving. + +

+ +

+ + +## User Project: Create Your Own + +You have now learned how to create a randomizer, and seen how multiple randomizers can be used together to create a rich, varied scene. Now it is time to create your own by yourself! How could this scene be further improved? + +Good luck and have fun! diff --git a/tutorials/pose_estimation/Documentation/Gifs/0_demo.gif b/tutorials/pose_estimation/Documentation/Gifs/0_demo.gif new file mode 100644 index 00000000..e7574e2d Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Gifs/0_demo.gif differ diff --git a/tutorials/pose_estimation/Documentation/Gifs/1_URDF_importer.gif b/tutorials/pose_estimation/Documentation/Gifs/1_URDF_importer.gif new file mode 100644 index 00000000..7c371a9e Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Gifs/1_URDF_importer.gif differ diff --git a/tutorials/pose_estimation/Documentation/Gifs/1_import_prefabs.gif b/tutorials/pose_estimation/Documentation/Gifs/1_import_prefabs.gif new file mode 100644 index 00000000..3c5ebd16 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Gifs/1_import_prefabs.gif differ diff --git a/tutorials/pose_estimation/Documentation/Gifs/1_package_imports.gif b/tutorials/pose_estimation/Documentation/Gifs/1_package_imports.gif new file mode 100644 index 00000000..51451dcc Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Gifs/1_package_imports.gif differ diff --git a/tutorials/pose_estimation/Documentation/Gifs/1_robot_settings.gif b/tutorials/pose_estimation/Documentation/Gifs/1_robot_settings.gif new file mode 100644 index 00000000..5dae15b1 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Gifs/1_robot_settings.gif differ diff --git a/tutorials/pose_estimation/Documentation/Gifs/1_rp_materials.gif b/tutorials/pose_estimation/Documentation/Gifs/1_rp_materials.gif new file mode 100644 index 00000000..da49e409 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Gifs/1_rp_materials.gif differ diff --git a/tutorials/pose_estimation/Documentation/Gifs/2_aspect_ratio.gif b/tutorials/pose_estimation/Documentation/Gifs/2_aspect_ratio.gif new file mode 100644 index 00000000..99cb895e Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Gifs/2_aspect_ratio.gif differ diff --git a/tutorials/pose_estimation/Documentation/Gifs/2_light_randomizer.gif b/tutorials/pose_estimation/Documentation/Gifs/2_light_randomizer.gif new file mode 100644 index 00000000..853675a8 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Gifs/2_light_randomizer.gif differ diff --git a/tutorials/pose_estimation/Documentation/Gifs/2_object_position_randomizer.gif b/tutorials/pose_estimation/Documentation/Gifs/2_object_position_randomizer.gif new file mode 100644 index 00000000..f1406e18 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Gifs/2_object_position_randomizer.gif differ diff --git a/tutorials/pose_estimation/Documentation/Gifs/2_robot_randomizer_settings.gif b/tutorials/pose_estimation/Documentation/Gifs/2_robot_randomizer_settings.gif new file mode 100644 index 00000000..f8f709c4 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Gifs/2_robot_randomizer_settings.gif differ diff --git a/tutorials/pose_estimation/Documentation/Gifs/2_y_rotation_randomizer.gif b/tutorials/pose_estimation/Documentation/Gifs/2_y_rotation_randomizer.gif new file mode 100644 index 00000000..3efa3a0f Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Gifs/2_y_rotation_randomizer.gif differ diff --git a/tutorials/pose_estimation/Documentation/Gifs/2_y_rotation_randomizer_settings.gif b/tutorials/pose_estimation/Documentation/Gifs/2_y_rotation_randomizer_settings.gif new file mode 100644 index 00000000..431b1d37 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Gifs/2_y_rotation_randomizer_settings.gif differ diff --git a/tutorials/pose_estimation/Documentation/Gifs/4_trajectory_field.png b/tutorials/pose_estimation/Documentation/Gifs/4_trajectory_field.png new file mode 100644 index 00000000..6486b56a Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Gifs/4_trajectory_field.png differ diff --git a/tutorials/pose_estimation/Documentation/Gifs/5_camera_randomizer.gif b/tutorials/pose_estimation/Documentation/Gifs/5_camera_randomizer.gif new file mode 100644 index 00000000..238b3f0a Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Gifs/5_camera_randomizer.gif differ diff --git a/tutorials/pose_estimation/Documentation/Images/0_GIT_installed.png b/tutorials/pose_estimation/Documentation/Images/0_GIT_installed.png new file mode 100644 index 00000000..2b456538 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/0_GIT_installed.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/0_data_collection_environment.png b/tutorials/pose_estimation/Documentation/Images/0_data_collection_environment.png new file mode 100644 index 00000000..cdebb7db Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/0_data_collection_environment.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/0_json_environment.png b/tutorials/pose_estimation/Documentation/Images/0_json_environment.png new file mode 100644 index 00000000..edd332cc Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/0_json_environment.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/0_scene.png b/tutorials/pose_estimation/Documentation/Images/0_scene.png new file mode 100644 index 00000000..d733d4d5 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/0_scene.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/1_URDF_importer.png b/tutorials/pose_estimation/Documentation/Images/1_URDF_importer.png new file mode 100644 index 00000000..7496b554 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/1_URDF_importer.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/1_assets_preview.png b/tutorials/pose_estimation/Documentation/Images/1_assets_preview.png new file mode 100644 index 00000000..cf1f3227 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/1_assets_preview.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/1_build_support.png b/tutorials/pose_estimation/Documentation/Images/1_build_support.png new file mode 100644 index 00000000..525c2192 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/1_build_support.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/1_camera_settings.png b/tutorials/pose_estimation/Documentation/Images/1_camera_settings.png new file mode 100644 index 00000000..8d89bd48 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/1_camera_settings.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/1_create_new_project.png b/tutorials/pose_estimation/Documentation/Images/1_create_new_project.png new file mode 100644 index 00000000..6dcdb2aa Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/1_create_new_project.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/1_directional_light.png b/tutorials/pose_estimation/Documentation/Images/1_directional_light.png new file mode 100644 index 00000000..12eff004 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/1_directional_light.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/1_floor_settings.png b/tutorials/pose_estimation/Documentation/Images/1_floor_settings.png new file mode 100644 index 00000000..4b0c74bb Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/1_floor_settings.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/1_forward_renderer.png b/tutorials/pose_estimation/Documentation/Images/1_forward_renderer.png new file mode 100644 index 00000000..5edaa411 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/1_forward_renderer.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/1_forward_renderer_inspector.png b/tutorials/pose_estimation/Documentation/Images/1_forward_renderer_inspector.png new file mode 100644 index 00000000..4a9dc56b Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/1_forward_renderer_inspector.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/1_hierarchy.png b/tutorials/pose_estimation/Documentation/Images/1_hierarchy.png new file mode 100644 index 00000000..e1da9e6a Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/1_hierarchy.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/1_install_unity_version_1.png b/tutorials/pose_estimation/Documentation/Images/1_install_unity_version_1.png new file mode 100644 index 00000000..be71d162 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/1_install_unity_version_1.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/1_install_unity_version_2.png b/tutorials/pose_estimation/Documentation/Images/1_install_unity_version_2.png new file mode 100644 index 00000000..7af66668 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/1_install_unity_version_2.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/1_package_manager.png b/tutorials/pose_estimation/Documentation/Images/1_package_manager.png new file mode 100644 index 00000000..46e151ab Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/1_package_manager.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/1_package_manager_complete.png b/tutorials/pose_estimation/Documentation/Images/1_package_manager_complete.png new file mode 100644 index 00000000..3c008874 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/1_package_manager_complete.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/1_robot_settings.png b/tutorials/pose_estimation/Documentation/Images/1_robot_settings.png new file mode 100644 index 00000000..7d62026d Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/1_robot_settings.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/1_scene_overview.png b/tutorials/pose_estimation/Documentation/Images/1_scene_overview.png new file mode 100644 index 00000000..aa04208c Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/1_scene_overview.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/2_Pose_Estimation_Data_Collection.png b/tutorials/pose_estimation/Documentation/Images/2_Pose_Estimation_Data_Collection.png new file mode 100644 index 00000000..0d85d133 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/2_Pose_Estimation_Data_Collection.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/2_RobotArmReachablePositionRandomizerSetting.png b/tutorials/pose_estimation/Documentation/Images/2_RobotArmReachablePositionRandomizerSetting.png new file mode 100644 index 00000000..e3e277e6 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/2_RobotArmReachablePositionRandomizerSetting.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/2_cube_label.png b/tutorials/pose_estimation/Documentation/Images/2_cube_label.png new file mode 100644 index 00000000..7cd4d447 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/2_cube_label.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/2_domain_randomization.png b/tutorials/pose_estimation/Documentation/Images/2_domain_randomization.png new file mode 100644 index 00000000..e7e6bec9 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/2_domain_randomization.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/2_final_perception_script.png b/tutorials/pose_estimation/Documentation/Images/2_final_perception_script.png new file mode 100644 index 00000000..20d286cf Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/2_final_perception_script.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/2_fixed_length_scenario.png b/tutorials/pose_estimation/Documentation/Images/2_fixed_length_scenario.png new file mode 100644 index 00000000..df3d5116 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/2_fixed_length_scenario.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/2_light_randomizer_settings.png b/tutorials/pose_estimation/Documentation/Images/2_light_randomizer_settings.png new file mode 100644 index 00000000..ad858d39 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/2_light_randomizer_settings.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/2_multiple_objects.png b/tutorials/pose_estimation/Documentation/Images/2_multiple_objects.png new file mode 100644 index 00000000..7595dad1 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/2_multiple_objects.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/2_perception_camera.png b/tutorials/pose_estimation/Documentation/Images/2_perception_camera.png new file mode 100644 index 00000000..c7f42267 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/2_perception_camera.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/2_tags.png b/tutorials/pose_estimation/Documentation/Images/2_tags.png new file mode 100644 index 00000000..7e5b40c6 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/2_tags.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/2_tutorial_id_label_config.png b/tutorials/pose_estimation/Documentation/Images/2_tutorial_id_label_config.png new file mode 100644 index 00000000..bef2b03d Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/2_tutorial_id_label_config.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/2_y_rotation_randomizer.png b/tutorials/pose_estimation/Documentation/Images/2_y_rotation_randomizer.png new file mode 100644 index 00000000..1d41fc8d Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/2_y_rotation_randomizer.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/3_data_logs.png b/tutorials/pose_estimation/Documentation/Images/3_data_logs.png new file mode 100644 index 00000000..8215ebac Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/3_data_logs.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/3_performance_model.png b/tutorials/pose_estimation/Documentation/Images/3_performance_model.png new file mode 100644 index 00000000..837b0360 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/3_performance_model.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/3_publish_object.png b/tutorials/pose_estimation/Documentation/Images/3_publish_object.png new file mode 100644 index 00000000..2b12060a Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/3_publish_object.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/3_saved_data.png b/tutorials/pose_estimation/Documentation/Images/3_saved_data.png new file mode 100644 index 00000000..64f96695 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/3_saved_data.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/3_tensorboard.png b/tutorials/pose_estimation/Documentation/Images/3_tensorboard.png new file mode 100644 index 00000000..2e35ef53 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/3_tensorboard.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/4_Pose_Estimation_ROS.png b/tutorials/pose_estimation/Documentation/Images/4_Pose_Estimation_ROS.png new file mode 100644 index 00000000..da1b09d5 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/4_Pose_Estimation_ROS.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/4_ROS_objects.png b/tutorials/pose_estimation/Documentation/Images/4_ROS_objects.png new file mode 100644 index 00000000..a09cbafd Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/4_ROS_objects.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/4_docker_daemon.png b/tutorials/pose_estimation/Documentation/Images/4_docker_daemon.png new file mode 100644 index 00000000..2b9acdad Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/4_docker_daemon.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/4_ros_connect.png b/tutorials/pose_estimation/Documentation/Images/4_ros_connect.png new file mode 100644 index 00000000..c5204b94 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/4_ros_connect.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/4_ros_settings.png b/tutorials/pose_estimation/Documentation/Images/4_ros_settings.png new file mode 100644 index 00000000..77cc1b77 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/4_ros_settings.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/4_terminal.png b/tutorials/pose_estimation/Documentation/Images/4_terminal.png new file mode 100644 index 00000000..f6e55016 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/4_terminal.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/4_trajectory_field.png b/tutorials/pose_estimation/Documentation/Images/4_trajectory_field.png new file mode 100644 index 00000000..80dbda40 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/4_trajectory_field.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/5_uniform_pose_randomizer_settings.png b/tutorials/pose_estimation/Documentation/Images/5_uniform_pose_randomizer_settings.png new file mode 100644 index 00000000..f3baf599 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/5_uniform_pose_randomizer_settings.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/button_error.png b/tutorials/pose_estimation/Documentation/Images/button_error.png new file mode 100644 index 00000000..0e733598 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/button_error.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/cube_environment.png b/tutorials/pose_estimation/Documentation/Images/cube_environment.png new file mode 100644 index 00000000..93a5220a Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/cube_environment.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/faq_base_mat.png b/tutorials/pose_estimation/Documentation/Images/faq_base_mat.png new file mode 100644 index 00000000..c1283f53 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/faq_base_mat.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/path_data.png b/tutorials/pose_estimation/Documentation/Images/path_data.png new file mode 100644 index 00000000..af1fed90 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/path_data.png differ diff --git a/tutorials/pose_estimation/Documentation/Images/unity_motionplan.png b/tutorials/pose_estimation/Documentation/Images/unity_motionplan.png new file mode 100644 index 00000000..b7469236 Binary files /dev/null and b/tutorials/pose_estimation/Documentation/Images/unity_motionplan.png differ diff --git a/tutorials/pose_estimation/Documentation/install_unity.md b/tutorials/pose_estimation/Documentation/install_unity.md new file mode 100644 index 00000000..ab017682 --- /dev/null +++ b/tutorials/pose_estimation/Documentation/install_unity.md @@ -0,0 +1,16 @@ +# Installing Unity + +_**Unity Version**_: if you want to use the Unity project given by the repository, you need to use a version of Unity at least `2020.2.*`. The easiest way to install Unity is through Unity Hub. + +1. Navigate to [this](https://unity3d.com/get-unity/download) page to download Unity Hub +2. Go to the Unity Hub and in the panel `install`. Then click on `Add` and select the latest release of `Unity 2020.2`. + +

+ +

+ +During the installation of Unity, you will be asked to choose which build support modules you would like to include. For this project, we will not need any of them. + +3. You will need a code editor to complete this tutorial. If you do not already have it on your computer, the wizard will give you an option to install _**Visual Studio**_. You may go ahead and check this option if you would like to use _**Visual Studio**_, or you may use a different code editor of your choice. + +4. Click on `Install this version with Unity Hub`. \ No newline at end of file diff --git a/tutorials/pose_estimation/Documentation/quick_demo_full.md b/tutorials/pose_estimation/Documentation/quick_demo_full.md new file mode 100644 index 00000000..0d3e7825 --- /dev/null +++ b/tutorials/pose_estimation/Documentation/quick_demo_full.md @@ -0,0 +1,156 @@ +# Pick-and-Place with Pose Estimation: Quick Demo + +⌛ _Expected completion time: 25-35 minutes_ + +If you just want to run the completed project, this section can help you get up and running quickly. Here, we provide a pre-trained pose estimation model for you to use, and assume a Docker workflow. By the end of this quick demo, you will be able to perform pick & place in Unity with machine learning-based perception. To learn how to build something like this from scratch, see our [full tutorial](1_set_up_the_scene.md). + +**Table of Contents** +- [Prerequisites](#Prerequisites) +- [Add the Pose Estimation Model](#add-the-pose-estimation-model) +- [Set up the ROS side](#set-up-the-ros-side) +- [Set up the Unity side](#set-up-the-unity-side) +- [Putting it together](#putting-it-together) + +--- + +## Prerequisites + +You will first need to **clone** this repository. + +>Note For Windows Users: +You need to have a software enabling you to run bash files. One option is to download [GIT](https://git-scm.com/downloads). During installation of GIT, add GIT Bash to windows context menu by selecting its option. After installation right click in your folder select [GIT Bash Here](Images/0_GIT_installed.png). + +1. Open a terminal and put yourself where you want to host the repository. + +```bash +git clone https://github.com/Unity-Technologies/Unity-Robotics-Hub.git +``` + +Three package dependencies for this project, [Universal Robot](https://github.com/ros-industrial/universal_robot) for the UR3 arm configurations, [Robotiq](https://github.com/ros-industrial/robotiq) for the gripper, and [MoveIt Msgs](https://github.com/ros-planning/moveit_msgs) are large repositories. A bash script has been provided to run a sparse clone to only copy the files required for this tutorial, as well as the [ROS TCP Endpoint](https://github.com/Unity-Technologies/ROS-TCP-Endpoint/). + +2. Still in the same terminal, run: +```bash +cd Unity-Robotics-Hub/tutorials/pose_estimation +./submodule.sh +``` + +3. [Install Unity `2020.2.*`.](install_unity.md) + +## Setup + +1. Open the completed project. In the Unity Hub, click the `Add` button, and select `tutorials/pose_estimation/PoseEstimationDemoProject` from inside the file location where you cloned this repo. + +2. Open the scene. Go to `Assets > Scenes` and double click on `TutorialPoseEstimation`. + +3. The size of the images that will be used for pose estimation depends on a setting in the Game view. Select the `Game` view and select `Free Aspect`. Then select the **+**, with the message `Add new item` on it if you put your mouse over the + sign. For the Width select `650` and for the Height select `400`. A gif below shows you how to do it. + +

+ +

+ +## Add the Pose Estimation Model + +In your `pose_estimation` folder, you should have a `ROS` folder. Inside that folder you should have a `src` folder and inside that one 5 folders: `moveit_msgs`, `robotiq`, `ros_tcp_endpoint`, `universal_robot` and `ur3_moveit`. + +1. Download the [pose estimation model](https://github.com/Unity-Technologies/Unity-Robotics-Hub/releases/download/Pose-Estimation/UR3_single_cube_model.tar) we have trained. + +2. Go inside the `ROS/SRC/ur3_moveit` folder and create a folder `models`. Copy the `UR3_single_cube_model.tar` file you've just downloaded into this folder. + + +## Set up the ROS side + +>Note: This project has been developed with Python 3 and ROS Noetic. + +We have provided a Docker container to get you up and running quickly. + +1. Install the [Docker Engine](https://docs.docker.com/engine/install/) if not already installed. Start the Docker daemon. To check if the Docker daemon is running, when you open you Docker application you should see something similar to the following (green dot on the bottom left corner with the word running at the foot of Docker): + +

+ +

+ +2. In the terminal, ensure the current location is at the root of the `pose_estimation` directory. Build the provided ROS Docker image as follows: + +```bash +docker build -t unity-robotics:pose-estimation -f docker/Dockerfile . +``` + +>Note: The provided Dockerfile uses the [ROS Noetic base Image](https://hub.docker.com/_/ros/). Building the image will install the necessary packages as well as copy the [provided ROS packages and submodules](../ROS/) to the container, predownload and cache the [VGG16 model](https://pytorch.org/docs/stable/torchvision/models.html#torchvision.models.vgg16), and build the catkin workspace. + +3. Start the newly built Docker container: + +```docker +docker run -it --rm -p 10000:10000 -p 5005:5005 unity-robotics:pose-estimation /bin/bash +``` + +When this is complete, it will print: `Successfully tagged unity-robotics:pose-estimation`. This console should open into a bash shell at the ROS workspace root, e.g. `root@8d88ed579657:/catkin_ws#`. + +>Note: If you encounter issues with Docker, check the [Troubleshooting Guide](troubleshooting.md) for potential solutions. + +4. Source your ROS workspace: + +```bash +source devel/setup.bash +``` + +The ROS workspace is now ready to accept commands! + + +## Set up the Unity side + +1. At the top of your screen, open the ROS settings by selecting `Robotics` > `ROS Settings`. Fill `ROS IP Address` and `Override Unity IP` with the loopback IP address `127.0.0.1`. + +2. Ensure that the ROS Port is set to `10000` and the Unity Port is set to `5005`. You can leave the Show HUD box unchecked. This HUD can be helpful for debugging message and service requests with ROS. You may turn this on if you encounter connection issues. + +

+ +

+ +## Putting it together + +Run the following `roslaunch` command in order to start roscore, set the ROS parameters, start the server endpoint, start the Mover Service and Pose Estimation nodes, and launch MoveIt. + +1. In the terminal window of your ROS workspace opened above, run the provided launch file: + +```bash +roslaunch ur3_moveit pose_est.launch +``` + +This launch file also loads all relevant files and starts ROS nodes required for trajectory planning for the UR3 robot. The launch files for this project are available in the package's launch directory, i.e. `src/ur3_moveit/launch/`. + +This launch will print various messages to the console, including the set parameters and the nodes launched. The final message should confirm `You can start planning now!`. + +>Note: The launch file may throw errors regarding `[controller_spawner-5] process has died`. These are safe to ignore as long as the final message is `Ready to plan`. This confirmation may take up to a minute to appear. + +

+ +2. Return to Unity, and press Play. + +>Note: If you encounter connection errors such as a `SocketException` or don't see a completed TCP handshake between ROS and Unity in the console window, return to the [Set up the Unity side](#set-up-the-unity-side) section above to update the ROS Settings and generate the ROSConnectionPrefab. + + +Note that the robot arm must be in its default position, i.e. standing upright, to perform Pose Estimation. This is done by simply clicking the `Reset Robot Position` button after each run. + +3. Press the `Pose Estimation` button to send the image to ROS. + +This will grab the current camera view, generate a [sensor_msgs/Image](http://docs.ros.org/en/noetic/api/sensor_msgs/html/msg/Image.html) message, and send a new Pose Estimation Service Response to the ROS node running `pose_estimation_service.py`. This will run the trained model and return a Pose Estimation Service Response containing an estimated pose, which is subsequently converted and sent as a new Mover Service Response to the `mover.py` ROS node. Finally, MoveIt calculates and returns a list of trajectories to Unity, and the poses are executed to pick up and place the cube. + +The target object and goal object can be moved around during runtime for different trajectory calculations, or the target can be randomized using the `Randomize Cube` button. + +>Note: You may encounter a `UserWarning: CUDA initialization: Found no NVIDIA driver on your system.` error upon the first image prediction attempt. This warning can be safely ignored. + +>Note: If you encounter issues with the connection between Unity and ROS, check the [Troubleshooting Guide](troubleshooting.md) for potential solutions. + +You should see the following: +

+ +

+ +Congrats! You did it! + +If you'd now like to follow the full tutorial to learn how to build the pick-and-place simulation from scratch, proceed to [Part 1](1_set_up_the_scene.md) + + + + + diff --git a/tutorials/pose_estimation/Documentation/quick_demo_train.md b/tutorials/pose_estimation/Documentation/quick_demo_train.md new file mode 100644 index 00000000..c0714e4e --- /dev/null +++ b/tutorials/pose_estimation/Documentation/quick_demo_train.md @@ -0,0 +1,54 @@ +# Data Collection: Quick Demo + +If you just want to run the completed project in order to collect your training and validation data this section can help do it. + +To learn how to build something like this from scratch, see [Part 1](1_set_up_the_scene.md) and [Part 2](2_set_up_the_data_collection_scene.md) of our tutorial. + +**Table of Contents** +- [Prerequisites](#Prerequisites) +- [Setup](#setup) +- [Swichting to Data Collection Mode](#switch) +- [Data Collection](#data-collection) + +## Prerequisites + +To follow this tutorial you need to **clone** this repository even if you want to create your Unity project from scratch. + +>Note For Windows Users: +You need to have a software enabling you to run bash files. One option is to download [GIT](https://git-scm.com/downloads). During installation of GIT, add GIT Bash to windows context menu by selecting its option. After installation right click in your folder select [GIT Bash Here](Images/0_GIT_installed.png). + + +1. Open a terminal and put yourself where you want to host the repository. +```bash +git clone https://github.com/Unity-Technologies/Unity-Robotics-Hub.git +``` + +2. [Install Unity `2020.2.*`.](install_unity.md) + +3. Open the completed project. To do so, open Unity Hub, click the `Add` button, and select `PoseEstimationDemoProject` from the `Unity-Robotics-Hub/tutorials/pose_estimation/` folder. + +## Setup + +1. Open the scene. Go to `Assets > Scenes` and double click on `TutorialPoseEstimation`. + +2. The size of the images that will be used for pose estimation depends on a setting in the Game view. Select the `Game` view and select `Free Aspect`. Then select the **+**, with the message `Add new item` on it if you put your mouse over the + sign. For the Width select `650` and for the Height select `400`. A gif below shows you how to do it. + +

+ +

+ +## Switching to Data Collection Mode +The completed project is set up for inference mode by default, so we must switch it to data collection mode. + +1. Uncheck the `ROSObjects` GameObject in the _**Hierarchy**_ tab to disable it. + +2. On the `Simulation Scenario` GameObject, check the `Fixed Length Scenario` component to enable it. + +3. On the `Main Camera` GameObject, check the `Perception Camera (Script)` component to enable it. + +## Data Collection +To get strarted with the data collection, follow the instructions in [Part 3: Collect the Training and Validation Data](3_data_collection_model_training.md#step-1) of the tutorial. This section will explain how to set the random seed of the environment, choose how many training data examples you'd like to collect, and get it running. + +If you'd like to then move on to training a pose estimation model on the data you've collected, move on to [Part 3: Train the Deep Learning Model](3_data_collection_model_training.md#step-2). + +Have fun! diff --git a/tutorials/pose_estimation/Documentation/troubleshooting.md b/tutorials/pose_estimation/Documentation/troubleshooting.md new file mode 100644 index 00000000..44122872 --- /dev/null +++ b/tutorials/pose_estimation/Documentation/troubleshooting.md @@ -0,0 +1,71 @@ +# Pose-Estimation-Demo Tutorial: Troubleshooting + +**Table of Contents** + - [Part 1: Create Unity scene with imported URDF](#part-1-create-unity-scene-with-imported-urdf) + - [Package Installation](#package-installation) + - [Assets, Materials](#assets-materials) + - [URDF Importer](#urdf-importer) + - [Part 3: Data Collection and model training](#part-3-data-collection-and-model-training) + - [Docker, Environment](#docker-environment) + - [Part 4: Pick-and-Place](#part-4-pick-and-place) + - [Unity Scene](#unity-scene) + - [Docker, ROS-TCP Connection](#docker-ros-tcp-connection) + - [Ubuntu](#ubuntu) + +## Part 1: Create Unity scene with imported URDF + +### Package Installation +- If you are receiving a `[Package Manager Window] Unable to add package ... xcrun: error: invalid developer path...`, you may need to install the [Command Line Tools](https://developer.apple.com/library/archive/technotes/tn2339/_index.html) package for macOS via `xcode-select --install`. + +### Assets, Materials +- Upon import, the cube and floor materials may appear to be bright pink (i.e. missing texture). + - Cube: Go to `Assets > TutorialAssets > Materials`. Select the `AlphabetCubeMaterial`. There is a section called `Surface Inputs`. If the Base Map is not assigned, select the circle next to this field. Click on it and start typing `NonsymmetricCubeTexture` and select it when it appears. Apply this updated `AlphabetCubeMaterial` to the Cube. Your Inspector view should look like the following: + ![](Images/1_alphabet_material.png) + - Floor: Assign the `NavyFloor` material to the Floor object. +- If all of the project materials appear to have missing textures, ensure you have created the project using the Universal Render Pipeline. +- If the UR3 arm's base has some missing textures (e.g. pink ovals), in the Project window, navigate to `Assets/TutorialAssets/URDFs/ur3_with_gripper/ur_description/meshes/ur3/visual/base.dae`. Select the base, and in the Inspector window, open the `Materials` tab. If the `Material_001` and `_002` fields are blank, assign them to `Assets/TutorialAssets/URDFs/ur3_with_gripper/ur_description/Materials/Material_001` and `_002`, respectively. + + ![](Images/faq_base_mat.png) + +### URDF Importer +- If you are not seeing `Import Robot from URDF` in the `Assets` menu, check the console for compile errors. The project must compile correctly before the editor tools become available. +- If the robot appears loose/wiggly or is not moving with no console errors, ensure on the Controller script of the `ur3_with_gripper` that the `Stiffness` is **10000**, the `Damping` is **1000** and the `Force Limit` is **1000**. +- Note that the world-space origin of the robot is defined in its URDF file. In this sample, we have assigned it to sit on top of the table, which is at `(0, 0.77, 0)` in Unity coordinates. Moving the robot from its root position in Unity will require a change to its URDF definition. + + ```xml + + + + + + ``` + + **Note**: Going from Unity world space to ROS world space requires a conversion. Unity's `(x,y,z)` is equivalent to the ROS `(z,-x,y)` coordinate. + +## Part 3: Data Collection and model training + +### Docker, Environment +- If you are using a Docker container to train your model but it is killed shortly after starting, you may need to increase the memory allocated to Docker. In the Docker Dashboard, navigate to Settings (via the gear icon) > Resources. The suggested minimum memory is 4.00 GB, but you may need to modify this for your particular needs. +- If you encounter errors installing Pytorch via the instructed `pip3` command, try the following instead: + ```bash + sudo pip3 install rospkg numpy jsonpickle scipy easydict torch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html + ``` + +## Part 4: Pick-and-Place + +### Unity Scene +- The buttons might appear oversized compared to the rest of the objects in the scene view, this is a normal behavior. If you zoom out from the table you should see something similar to the following: +

+ +

+ +### Docker, ROS-TCP Connection +- Building the Docker image may throw an `Could not find a package configuration file provided by...` exception if one or more of the directories in ROS/ appears empty. Ensure you have run the `submodule.sh` script to populate the ROS packages. +- `...failed because unknown error handler name 'rosmsg'` This is due to a bug in an outdated package version. Try running `sudo apt-get update && sudo apt-get upgrade` to upgrade packages. +- `Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?` The system-independent `docker info` command can verify whether or not Docker is running. This command will throw a `Server: ERROR` if the Docker daemon is not currently running, and will print the appropriate [system-wide information](https://docs.docker.com/engine/reference/commandline/info/) otherwise. +- Occasionally, not having enough memory allocated to the Docker container can cause the `server_endpoint` to fail. This may cause unexpected behavior during the pick-and-place task, such as constantly predicting the same pose. If this occurs, check your Docker settings. You may need to increase the `Memory` to 8GB. + - This can be found in Docker Desktop settings, under the gear icon. +- `Exception Raised: unpack requires a buffer of 4 bytes`: This may be caused by a mismatch in the expected Service Request formatting. Ensure that the [srv definition](../ROS/src/ur3_moveit/srv/MoverService.srv) matches the [generated C# script](../PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv/MoverServiceRequest.cs), and that you have not modified these files since the last push to your ROS workspace. + +### Ubuntu +- Running Unity and Docker on Ubuntu may throw a `System.Net.SocketException: Address already in use` error when using the loopback address. If this is the case, in your Unity Editor, under Robotics > ROS Settings, leave the `Override Unity IP Address` blank to let Unity automatically determine the address. Change the `ROS IP Address` to the IP of your Docker container, most likely `172.17.0.X`. You may need to modify these settings based on your unique network setup. \ No newline at end of file diff --git a/tutorials/pose_estimation/Model/.gitignore b/tutorials/pose_estimation/Model/.gitignore new file mode 100644 index 00000000..1f023912 --- /dev/null +++ b/tutorials/pose_estimation/Model/.gitignore @@ -0,0 +1,21 @@ +# Logs # +###################### +*.log + +# OS generated files # +###################### +.DS_Store + +# Python # +########### +__pycache__/ + +# Runs +runs/ +*.egg-info/ +.coverage +*.tar.gz +env/ + + + diff --git a/tutorials/pose_estimation/Model/Dockerfile b/tutorials/pose_estimation/Model/Dockerfile new file mode 100644 index 00000000..2d8fc7da --- /dev/null +++ b/tutorials/pose_estimation/Model/Dockerfile @@ -0,0 +1,50 @@ +FROM nvidia/cuda:10.1-cudnn7-runtime-ubuntu18.04 + +# Add Miniconda +# https://github.com/ContinuumIO/docker-images/blob/master/miniconda3/debian/Dockerfile +ENV LANG=C.UTF-8 LC_ALL=C.UTF-8 +ENV PATH /opt/conda/bin:$PATH + +RUN apt-get update --fix-missing && \ + apt-get install -y wget bzip2 ca-certificates libglib2.0-0 libxext6 libsm6 libxrender1 git mercurial subversion && \ + apt-get clean + +RUN wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda.sh && \ + /bin/bash ~/miniconda.sh -b -p /opt/conda && \ + rm ~/miniconda.sh && \ + /opt/conda/bin/conda clean -tipsy && \ + ln -s /opt/conda/etc/profile.d/conda.sh /etc/profile.d/conda.sh && \ + echo ". /opt/conda/etc/profile.d/conda.sh" >> ~/.bashrc && \ + echo "conda activate base" >> ~/.bashrc && \ + find /opt/conda/ -follow -type f -name '*.a' -delete && \ + find /opt/conda/ -follow -type f -name '*.js.map' -delete && \ + /opt/conda/bin/conda clean -afy + +# Add Tini init systems to handle orphaned processes +# https://cloud.google.com/solutions/best-practices-for-building-containers#problem_2_how_classic_init_systems_handle_orphaned_processes +ENV TINI_VERSION v0.19.0 +ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /usr/local/bin/tini +RUN chmod +x /usr/local/bin/tini + +# Add project stuff +WORKDIR / +VOLUME /notebooks + +# This will install all dependencies +COPY environment-gpu.yml ./ +RUN conda env update -n base -f environment-gpu.yml && \ + conda clean -afy + +# COPY the rest of code here +COPY . ./ + +# pip install this package +RUN pip install -e . + +# pre-load VGG weights +RUN python -c 'import pose_estimation.model as model; model.preload()' + +# Use -g to ensure all child process received SIGKILL +ENTRYPOINT ["tini", "-g", "--"] + +CMD sh -c "jupyter notebook --notebook-dir=/ --ip=0.0.0.0 --no-browser --allow-root --port=8888 --NotebookApp.token='' --NotebookApp.password='' --NotebookApp.allow_origin='*' --NotebookApp.base_url=${NB_PREFIX}" diff --git a/tutorials/pose_estimation/Model/README.md b/tutorials/pose_estimation/Model/README.md new file mode 100644 index 00000000..88a117bd --- /dev/null +++ b/tutorials/pose_estimation/Model/README.md @@ -0,0 +1,68 @@ +Pose Estimation Model +===================== +This section contains code for training and evaluating a deep neural network to predict the pose of a single object from RGB images. We provide support for running both locally and with Docker. + +This model is a modified implementation of [Domain Randomization for Transferring Deep Neural Networks from Simulation to the Real World](https://arxiv.org/pdf/1703.06907.pdf), by Tobin et. al. It is based on the classic VGG-16 backbone architecture, and initialized with weights pre-trained on the ImageNet dataset. The head of the network is replaced with a 3D position prediction head that outputs (x, y, z), and an orientation predicton head that outputs a quaternion (qx, qy, qz, qw). + +

+ +

+ +## Quick Start (Recommended) +We trained this model on sythetic data collected in Unity. To learn how to collect this data and train the model yourself, see our [data collection and training tutorial](../Documentation/quick_demo_train.md). + +## Pre-Trained Model +We've provided a pre-trained model, which can be downloaded [here](https://github.com/Unity-Technologies/Unity-Robotics-Hub/releases/download/Pose-Estimation/UR3_single_cube_model.tar). + +## Setup + * [For running on docker](documentation/running_on_docker.md#docker-requirements) + * [For running in the cloud](documentation/running_on_the_cloud.md) + * [For running locally with Conda](../Documentation/3_data_collection_model_training.md#option-b-using-conda) + +## CLI +This model supports a `train` and an `evaluate` command. Both of these have many arguments, which you can examine in `cli.py`. They will default to the values in `config.yaml` for convenience, but can be overridden via the command line. + +The most important `train` arguments to be aware of are: +* `--data_root`: Path to the directory containing your data folders. These directory should include `UR3_single_cube_training` and `UR3_single_cube_validation`, containing the training and validation data, respectively. +* `--log-dir-system`: Path to directory where you'd like to save Tensorboard log files and model checkpoint files. + +The most important `evaluate` arguments to be aware of are: +* `--load-dir-checkpoint`: Path to model to be evaluated. +* `--data_root`: Path to the directory containing your data folders. These directory should include `UR3_single_cube_training` and `UR3_single_cube_validation`, containing the training and validation data, respectively. + + +## Performance + +Below is a description of the model's performance on predicting the pose of a cube. For the loss, we used the L2 norm for the position and orientation in each batch. + +However, we used different metrics to _evaluate_ the performance of the model. +* To evaluate translation predictions, we measured the [average L2 norm over the dataset](pose_estimation/evaluation_metrics/translation_average_mean_square_error.py). +* To evaluate the orientation predictions, we used the angle between the orientation of the prediction and the orientation of the target, averaged over the dataset (implementation [here](pose_estimation/evaluation_metrics/orientation_average_quaternion_error.py)). + + +| | Training Error | Validation Error | +|:-------------------:|:---------------------------:|:--------------------------:| +|Translation | 0.012 (12% of cube's size) | 0.01 (10% of cube's size) | +|Orientation (radian) | 0.06 | 0.05 | + + +## Unit Testing + +We use [pytest](https://docs.pytest.org/en/latest/) to run tests located under `tests/`. You can run the tests after following the setup instructions in [Running on Local with Conda](../documentation/3_data_collection_model_training.md#option-b-using-conda) commands. + +You can run the entire test suite with: + +```bash +python -m pytest +``` + +or run individual test files with: + +```bash +python -m pytest tests/test_average_translation_mean_square_error.py +``` + +## Resources +* [Documentation](documentation/codebase_structure.md) describing structure of the model code +* [Domain Randomization for Transferring Deep Neural Networks from Simulation to the Real World](https://arxiv.org/pdf/1703.06907.pdf) +* [Pose Estimation Tutorial](../README.md) \ No newline at end of file diff --git a/tutorials/pose_estimation/Model/config.yaml b/tutorials/pose_estimation/Model/config.yaml new file mode 100644 index 00000000..22895daa --- /dev/null +++ b/tutorials/pose_estimation/Model/config.yaml @@ -0,0 +1,33 @@ +estimator: UR3_single_cube_model +train: + dataset_zip_file_name_training: UR3_single_cube_training + batch_training_size: 20 + accumulation_steps: 10 + epochs: 120 + beta_loss: 1 + sample_size_train: 0 +val: + dataset_zip_file_name_validation: UR3_single_cube_validation + batch_validation_size: 30 + eval_freq: 4 + sample_size_val: 0 +test: + dataset_zip_file_name_test: UR3_single_cube_validation + batch_test_size: 30 + sample_size_test: 0 +dataset: + image_scale: 224 + download_data_gcp: False + gcs_bucket: None + pose_estimation_gcs_path: None + symmetric: False +adam_optimizer: + lr: 0.0001 + beta_1: 0.9 + beta_2: 0.999 +checkpoint: + load_dir_checkpoint: None + save_frequency: 1 +system: + log_dir_system: /save/single_cube + data_root: /data diff --git a/tutorials/pose_estimation/Model/documentation/codebase_structure.md b/tutorials/pose_estimation/Model/documentation/codebase_structure.md new file mode 100644 index 00000000..70793a45 --- /dev/null +++ b/tutorials/pose_estimation/Model/documentation/codebase_structure.md @@ -0,0 +1,157 @@ +Codebase Structure +================== + +In this project, I create a network to predict the position of a cube. + +### Architecture +The pose estimation project is organized as following. + +PoseEstimationModel: +* [environment-gpu.yml](../environment-gpu.yml): + If the computer your are runnning the project from **has a gpu support**, this file sets the dependencices of the project and the different packages to install. It is meant to be used when you create your conda environment. + +* [environment.yml](../environment.yml): + If you the computer your are runnning the project from **does not have a gpu support**, this file sets the dependencices of the project and the different packages to install. It is meant to be used when you create your conda environment. + +* [setup.py](../setup.py): + This file is to create a package as your project. + +* [cli.py](../pose_estimation/cli.py): + This file contains the cli commands which are the commands to launch the different processes (either train or evaluate). + +* [config.yaml](../config.yaml): + This file contains the default configuration for the estimator (pose estimation model) on the single cube dataset. + +* [single_cube_dataset.py](../pose_estimation/single_cube_dataset.py): + This file contains knowledge on how the SingleCubeDataset class dataset should be loaded into memory. + +* [model.py](../pose_estimation/model.py): + This file contains the neural network along with the custom linear activation function to perform + the pose estimation task: predict the object's translation (coordinates x, y, z of the cube's center) + and the cube's orientation (quaternion describing the orientation of the cube) if the object is asymmetric otherwise it will predict only the translation. + +* [pose_estimation_estimator.py](../pose_estimation/pose_estimation_estimator.py): + This file contains the pose estimation estimator and the different methods you can apply on your model as train, evaluate, save and + load. + +* [train.py](../pose_estimation/train.py): + This file contains the model training process. + +* [evaluate.py](../pose_estimation/evaluate.py): + This file contains the model evaluation process. + +* [evaluation_metrics](../pose_estimation/evaluation_metrics/): + This module contains metrics used by the pose estimation estimator. + +* [logger.py](../pose_estimation/logger.py): + This module contains the logger class which is a class designed to save elements (metrics, losses) visible on tensorboard. + +* [storage](../pose_estimation/storage): + This module contains functionality that relates to + writing/downloading/uploading to/from different sources. + +* [tests](../tests): + This module contains all the tests which you can run using the [pytest command](../README.md#unit-testing). + +* [Dockerfile](../Dockerfile): + This file is the file reponsible for the creation of the docker image. + +* [kubeflow](../kubeflow/): + This module contains kubeflow pipelines ([.py.tar.gz](../kubeflow/train_pipeline.py) files). You can have more information on how to set up a kubeflow pipeline in the [ReadMe](../kubeflow/README.md). + + +### Details of the config.py file +In the following, I will explain what each argument in the [config.yaml](../config.yaml) means. +There are 8 sections in the config files: + +* **estimator**: This will be the core name of the saved model + +* _**train**_: + - **dataset_zip_file_name_training**: name of the training dataset file. + + - **batch_training_size**: number of training samples to work through before the model’s internal parameters are updated. + + - **accumulation_steps**: number of backwards passes which are performed before updating the parameters. The goal is to have the same model parameters for multiple inputs (batches) and then update the model's parameters based on all these batches, instead of performing an update after every single batch. + + - **epochs**: number of passes of the entire training dataset the machine learning algorithm has completed. + + - **beta_loss**: beta coefficient when we add the translation and orientation losses. + + - **sample_size_train**: size of a dataset training sample. It is used to test operations/commands on a few examples. + +* _**val**_: + + - **dataset_zip_file_name_validation**: name of the validation dataset file. + + - **batch_validation_size**: number of validation samples to work through before the metrics are calculated. + + - **eval_freq**: frequency of epochs when the evaulation process is launched. + + - **sample_size_val**: size of a dataset validation sample. It is used to test operations/commands on a few examples. + +* _**test**_: + + - **dataset_zip_file_name_test**: name of the test dataset file. + + - **batch_test_size**: number of training samples to work through before the metrics are calculated. + + - **sample_size_test**: size of a dataset test sample. It is used to test operations/commands on a few examples. + +* _**dataset**_: + + - **image_scale**: size of the image we use to train the model (some processings need to be applied to give as input to the model though). + + - **download_data_gcp**: if True it will download the data from gcp otherwise it will use the data you have on local. + + - **gcs_bucket**: name of GCS Bucket where the datasets are located. + + - **pose_estimation_gcs_path**: path inside the gcp bucket where the datasets are located. + + - **symmetric**: Boolean. If the object is symmetric then the element is True otherwise it is False. Based on that we will only predict the translation + or translation and orientation. + +* _**adam_optimizer**_: + + - **lr**: learning rate which scales the magnitude of our weight updates in order to minimize the network's loss function. + + - **beta_1**: the exponential decay rate for the first moment estimates. + + - **beta_2**: the exponential decay rate for the second-moment estimates. + + +* _**checkpoint**_: + + - **load_dir_checkpoint**: path towards the saved model. + + - **save_frequency**: frequency of epochs when the model is saved. If it is set to 1 then the model will be saved every epoch and if it is set to 2 then the model will be saved ever two epochs. + +* _**system**_: + + - **log_dir_system**: path where the model and the metrics (.tar file that will be visioned by tensorbard) will be saved. + + - **data_root**: path towards the upper directory of the data. + + +### Save and Load methods +In the [pose_estimation_estimator.py](../pose_estimation/pose_estimation_estimator.py) file, there is one method to save and one method to load a model. + +The save method is called in [train.py](../pose_estimation/train.py) file at the line 95 and the load method is called in the [pose_estimation_estimator.py](../pose_estimation/pose_estimation_estimator.py) line 82. The model is saved using the save method of the checkpointer object and the model is loaded using the load method of the checkpointer object. The checkpointer object is created in [pose_estimation_estimator.py](../pose_estimation/pose_estimation_estimator.py) file line 50. Then, to understand how the model is saved or loaded we need to look into the [checkpoint.py](../pose_estimation/storage/checkpoint.py) file. + +But first, let's have a general overview of the [checkpoint.py](../pose_estimation/storage/checkpoint.py) file. There are three classes: +- **EstimatorCheckpoint**: it assigns `estimator checkpoint writer` according to `log_dir` which is responsible for saving estimators. The writer can be a GCS or local writer. It also assigns `loader` which is responsible for loading estimator from a given path. Loader can be a local, GCS or HTTP loader. +- **LocalEstimatorWriter**: it is to write (saves) estimator checkpoints locally. +- **GCSEstimatorWriter**: it is to write (saves) estimator checkpoints on GCP (Google Cloud Platform). + +When the EstimatorCheckpoint object is created, the static method `_create_writer` is called and based on the format of the `log_dir`, which is the directory where you want to save your model (attribute `log_dir` under `system` in [config.yaml](../config.yaml)), a `LocalEstimatorWriter` or a `GCSEstimatorWriter` object is created. + +#### Save +Now you have two options to save your model, either you save it on local or you save it on google cloud (you can use another cloud but you will have to make the changes yourself). +Then, if we go back to the method called to save the model, it is the `save` method of the `EstimatorCheckpoint` object. This method calls the `save` method of the object created by the `_create_writer` method. + +* `local`: the class `LocalEstimatorWriter` takes as attributes a `dirname` which is the `log_dir` path, a `prefix` which is the name of the estimator (corresponds to the argument `estimator` in the [config.yaml](../config.yaml) file), and a `suffix` which is by default equal to `.tar` (type of the file) and create a directory which will host the model. Then, the method `save` calls the method `save` of the estimator which in the [pose_estimation_estimator.py](../pose_estimation/pose_estimation_estimator.py) file. + +* `gcp`: The class `GCSEstimatorWriter` takes as attributes `cloud_path` which is the `log_dir` path towards the gcp bucket and a `prefix` which is the name of the estimator (corresponds to the argument `estimator` in the [config.yaml](../config.yaml) file). In the method `save`, the model is saved on a temporary directory on the local computer that the cloud uses. The process used is the process I just described a little bit above in `local`. The `save` method returns the full GCS cloud path to the saved checkpoint file. Then the method `upload` from the [GCSClient()](../pose_estimation/storage/gcs.py) class is called: it is a method to upload files on Google Cloud Platform. + +#### Load +Now you have three options to load your model, either you load it from local, you can load it on google cloud (you can use another cloud but you will have to make the changes yourself) or you can load it from http. +Then, if we go back to the method called to load the model, it is the `load` method of the `EstimatorCheckpoint` object. This method calls the `_get_loader_from_path` and based on the path, a load method will be launched (load_local, load_from_gcs, load_from_http). \ No newline at end of file diff --git a/tutorials/pose_estimation/Model/documentation/docs/docker_id_image.png b/tutorials/pose_estimation/Model/documentation/docs/docker_id_image.png new file mode 100644 index 00000000..8be5f938 Binary files /dev/null and b/tutorials/pose_estimation/Model/documentation/docs/docker_id_image.png differ diff --git a/tutorials/pose_estimation/Model/documentation/docs/docker_settings.png b/tutorials/pose_estimation/Model/documentation/docs/docker_settings.png new file mode 100644 index 00000000..9d9df4e3 Binary files /dev/null and b/tutorials/pose_estimation/Model/documentation/docs/docker_settings.png differ diff --git a/tutorials/pose_estimation/Model/documentation/docs/jupyter_notebook_local.png b/tutorials/pose_estimation/Model/documentation/docs/jupyter_notebook_local.png new file mode 100644 index 00000000..5b7c2fac Binary files /dev/null and b/tutorials/pose_estimation/Model/documentation/docs/jupyter_notebook_local.png differ diff --git a/tutorials/pose_estimation/Model/documentation/docs/kubeflow_details_pipeline.png b/tutorials/pose_estimation/Model/documentation/docs/kubeflow_details_pipeline.png new file mode 100644 index 00000000..6d5a76d7 Binary files /dev/null and b/tutorials/pose_estimation/Model/documentation/docs/kubeflow_details_pipeline.png differ diff --git a/tutorials/pose_estimation/Model/documentation/docs/network.png b/tutorials/pose_estimation/Model/documentation/docs/network.png new file mode 100644 index 00000000..d5f5bda6 Binary files /dev/null and b/tutorials/pose_estimation/Model/documentation/docs/network.png differ diff --git a/tutorials/pose_estimation/Model/documentation/docs/performance_model.png b/tutorials/pose_estimation/Model/documentation/docs/performance_model.png new file mode 100644 index 00000000..837b0360 Binary files /dev/null and b/tutorials/pose_estimation/Model/documentation/docs/performance_model.png differ diff --git a/tutorials/pose_estimation/Model/documentation/docs/successful_run_jupyter_notebook.png b/tutorials/pose_estimation/Model/documentation/docs/successful_run_jupyter_notebook.png new file mode 100644 index 00000000..1c90f426 Binary files /dev/null and b/tutorials/pose_estimation/Model/documentation/docs/successful_run_jupyter_notebook.png differ diff --git a/tutorials/pose_estimation/Model/documentation/docs/tensorboard.png b/tutorials/pose_estimation/Model/documentation/docs/tensorboard.png new file mode 100644 index 00000000..2e35ef53 Binary files /dev/null and b/tutorials/pose_estimation/Model/documentation/docs/tensorboard.png differ diff --git a/tutorials/pose_estimation/Model/documentation/running_on_docker.md b/tutorials/pose_estimation/Model/documentation/running_on_docker.md new file mode 100644 index 00000000..232c8a23 --- /dev/null +++ b/tutorials/pose_estimation/Model/documentation/running_on_docker.md @@ -0,0 +1,100 @@ +Docker +====== + +Another option to run the project is to use a Docker image. This option allows you to avoid downloading the project's libraries to your local computer, while still running the project successfully. With a Docker image, you also have the ability to train or evaluate your model on a cloud platform, such as Google Cloud Platform, AWS, Microsoft Cloud, and many others. + +## Docker Requirements +You will need to have [Docker](https://docs.docker.com/get-docker/) installed on your computer. + +### Running with Docker + +* **Action**: In [config.yaml](../config.yaml), under `system`, set the argument `log_dir_system` to: `/save/single_cube`. +* **Action**: Set the argument `data_root` under `system` to `/data`. + +Before creating the Docker image, you need to be sure your Docker settings are compatible with the project. Open Docker Desktop, click on `Settings` (the gear icon) on the top right, and go to `Resources`. Then change your settings so that it matches the following: + +

+ +

+ +**Note**: You may need to tweak these settings for your exact use case. + +The first step is to build the Docker image. + +* **Action**: Open a new terminal and navigate to the `Unity-Robotics-Hub/tutorials/pose_estimation/Model` folder. Then run the command to build your docker image, and name it `pose_estimation`: +```bash +docker build -t pose_estimation . +``` + +**Note**: If you change any code in the `Model` directory, you will need to rebuild the Docker image. + +* **Action**: Now we need to run the Docker image. One way is to use the bash shell. Still in the same terminal, enter the following: +```bash +docker run -it -v [FULL PATH TO DATA FOLDER]:/data -v [FULL PATH TO MODEL FOLDER]:/save/single_cube pose_estimation bash +``` + +The `FULL PATH TO DATA FOLDER` is the path to the upper directory of your data. As an example, I have put my `UR3_single_cube_training` and `UR3_single_cube_validation` data folder into a folder called `data` that I have created in my `Documents` folder. Thus my `FULL PATH TO DATA FOLDER` will be `/Users/jonathan.leban/Documents/data`. + +The `FULL PATH TO MODEL FOLDER` is the directory in which your models and metrics will be saved. For me, I created a folder called `save` into my Documents. +The `/save/single_cube` directory is the directory inside the docker container. That is why in the [config.yaml](../config.yaml) file, under the argument `system` the argument `log_dir_system` is set to `/save/single_cube`. + +Thus, the final command for me is: +```bash +docker run -it -v /Users/jonathan.leban/Documents/data:/data -v /Users/jonathan.leban/Documents/save:/save/single_cube pose_estimation bash +``` + +### CLI +At the top of the [cli.py](../pose_estimation/cli.py) file, you can see the documentation for all supported commands. + +#### Train +To run the training commmand with default values: + +* **Action**: +```bash +python -m pose_estimation.cli train +``` + +You can override many hyperparameters by adding additional arguments to this command. See [cli.py](../pose_estimation/cli.py) for a view of all supported arguments. + + +#### Evaluate +To run the evaluate commmand: + +```bash +python -m pose_estimation.cli evaluate --load-dir-checkpoint=/save/single_cube/UR3_single_cube_model.tar +``` + +Again, you can override many hyperparameters by adding additional arguments to this command. See [cli.py](../pose_estimation/cli.py) for a view of all supported arguments. + +### Copy metrics and models saved on Docker on your local machine +Once you have trained or evaluated your model, you may want to copy the results out of the docker container, to your local computer. + +After building and running the docker image your terminal should look something like this: + +

+ +

+ +Here you can see on the right of `root@` the id of the docker container you are in. Copy this id. + +As a reminder, we want to extract some files of `save/single_cube/` inside the docker container into your `save` folder you have created on your local computer. +Open a new terminal and enter the following: + +```bash +docker cp : +``` + +As an example, I will enter the following: +```bash +docker cp 48a81368b095:/save/single_cube/UR3_single_cube_model_ep120.tar /Users/jonathan.leban/Documents/save +``` + +To copy my metrics data out of docker, I will enter the following: +```bash +docker cp 48a81368b095:/save/single_cube/events.out.tfevents.1612402202.48a81368b095 /Users/jonathan.leban/Documents/save +``` + +The metrics folder should have the same format as **events.out.tfevents.<`number`>.<`number`>** + +### Troubleshooting +If when you launch the training you have an issue saying `Killed`, then you may want to try increasing the `Memory` allowance in your Docker settings. diff --git a/tutorials/pose_estimation/Model/documentation/running_on_the_cloud.md b/tutorials/pose_estimation/Model/documentation/running_on_the_cloud.md new file mode 100644 index 00000000..0c0d200c --- /dev/null +++ b/tutorials/pose_estimation/Model/documentation/running_on_the_cloud.md @@ -0,0 +1,22 @@ +## Running on the Cloud +Instead of training or evaluating your model on your local computer, you can use the cloud. The advantages of using the cloud are: +- Speed +- No local storage problems +- No need to install packages or software on your computer +- Can run on any computer and at any time without needing monitoring + +To run the project on the cloud, you will need to change a few parameters in [config.yaml](../config.yaml) file. The steps are described in the section below, [Google Cloud Platform](#google-cloud-platform). + +### Google Cloud Platform + +Instead of extracting the data from your local computer, you can also download it form the cloud. In that case, you have two options: +- If you want to access the cloud for your data in the Docker image, you will need to change the [config.yaml](../config.yaml) file. + - Under `dataset`, set `download_data_gcp` to `True` + - Specify the string value for `gcs_bucket` and `pose_estimation_gcs_path`, where `pose_estimation_gcs_path` is the path under the `gcs_bucket`. + - For example, if you have called your gcs_bucket `pose-estimation` and you have created a new folder inside `pose-estimation` named `dataset`, then pose_estimation_gcs_path will be equal to `dataset`. +- If you want to use the kubeflow pipeline, you will only need to fill out the respective arguments when you create the pipeline as you can see on the picture below: +![](docs/kubeflow_details_pipeline.png) + +However, please note that using a Cloud computing platform (Google Cloud, AWS, Azure) is charged. + +This project provides the code necessary to run your project on [kubeflow](#https://www.kubeflow.org/) where you can run [machine learning pipelines](#https://www.kubeflow.org/docs/pipelines/overview/pipelines-overview/). You will just need to follow the instructions in the [Kubeflow Pipeline](../kubeflow/README.md). \ No newline at end of file diff --git a/tutorials/pose_estimation/Model/environment-gpu.yml b/tutorials/pose_estimation/Model/environment-gpu.yml new file mode 100644 index 00000000..fc04ade2 --- /dev/null +++ b/tutorials/pose_estimation/Model/environment-gpu.yml @@ -0,0 +1,25 @@ +name: pose_estimation +channels: + - defaults + - pytorch +dependencies: + - python=3.8 + - click=7.1.2 + - cudatoolkit=10.1 + - cudnn=7.6.5 + - flake8=3.8.3 + - isort=4.3.21 + - jupyter=1.0.0 + - pip=20.1.1 + - pytest=5.4.3 + - pytest-cov=2.10.0 + - pytorch=1.7.0 + - torchvision=0.8.1 + - docopt=0.6.2 + - black=19.10b + - pyyaml=5.3.1 + + - pip: + - kfp==1.0.4 + - easydict==1.9 + - tensorboardX==2.1 \ No newline at end of file diff --git a/tutorials/pose_estimation/Model/environment.yml b/tutorials/pose_estimation/Model/environment.yml new file mode 100644 index 00000000..1f8b6ae0 --- /dev/null +++ b/tutorials/pose_estimation/Model/environment.yml @@ -0,0 +1,23 @@ +name: pose_estimation +channels: + - defaults + - pytorch +dependencies: + - python=3.8 + - click=7.1.2 + - flake8=3.8.3 + - isort=4.3.21 + - jupyter=1.0.0 + - pip=20.1.1 + - pytest=5.4.3 + - pytest-cov=2.10.0 + - pytorch=1.7.0 + - torchvision=0.8.1 + - docopt=0.6.2 + - black=19.10b + - pyyaml=5.3.1 + + - pip: + - easydict==1.9 + - tensorboardX==2.1 + - kfp==1.0.4 \ No newline at end of file diff --git a/tutorials/pose_estimation/Model/kubeflow/README.md b/tutorials/pose_estimation/Model/kubeflow/README.md new file mode 100644 index 00000000..28009ac9 --- /dev/null +++ b/tutorials/pose_estimation/Model/kubeflow/README.md @@ -0,0 +1,33 @@ +# Kubeflow pipelines +The Kubeflow pipelines are located inside the [kubeflow/](kubeflow/) folder, where you can find one pipeline for training the model, and one for the evaluation. + +Train and Evaluate Model using Kubeflow +======================================= + +## Create New Pipeline +You will need a Python environment with [kfp==0.5.1](https://pypi.org/project/kfp/) installed. + +### Compile Kubeflow pipeline + +```bash +cd kubeflow +python pose_estimation_train_pipeline.py +``` + +This will create a file `pose_estimation_train_pipeline.py.tar.gz` which can be uploaded to Kubeflow pipeline for executions. + +Next, go to the Kubeflow dashboard, and upload and create new pipeline using the above pipeline. You should be able to create a new parameterized experiment to run a Kubeflow pipeline following [this tutorial](https://www.kubeflow.org/docs/pipelines/pipelines-quickstart). + +## Train a model on Kubeflow for Single Object Pose Estimation +Go to [this pipeline](https://www.kubeflow.org/docs/gke/deploy/) and follow the tutorial to create a Kubeflow project. Once you have set up your project, go to the dashboard and press the `Create Run` button at the top of the screen (it has a solid blue fill and white letters). + +1. Set `docker_image` to be `gcr.io/unity-ai-thea-test/datasetinsights:` Where `` is the sha from the latest version of master in the thea repo. It should be the latest commit in the history: [link](https://gitlab.internal.unity3d.com/machine-learning/thea/commits/master). + +2. To check the progress of your model run `docker run -p 6006:6006 -v $HOME/.config:/root/.config:ro tensorflow/tensorflow tensorboard --host=0.0.0.0 --logdir gs://your/log/directory`. Open `http://localhost:6006` to view the dashboard. + + This command assumes you have run `gcloud auth login` command and the local credential is stored in `$HOME/.config`, which is mounted to the home directory inside Docker. It must have read permission to `gs://your/log/directory` + +3. If the mAP and mAR for validation are leveling off then you can terminate the run early; it's unlikely the model's performance will improve. + +4. The model will save checkpoints after every epoch to the logdir with the format `gs://logdir/ep#.estimator`, e.g. +`gs://thea-dev/runs/20200328_221415/FasterRCNN.ep24.estimator` diff --git a/tutorials/pose_estimation/Model/kubeflow/evaluate_pipeline.py b/tutorials/pose_estimation/Model/kubeflow/evaluate_pipeline.py new file mode 100644 index 00000000..bb6682d9 --- /dev/null +++ b/tutorials/pose_estimation/Model/kubeflow/evaluate_pipeline.py @@ -0,0 +1,90 @@ +import kfp.dsl as dsl +import kfp.gcp as gcp + + +def evaluate_op( + *, + gcs_bucket, + pose_estimation_gcs_path, + log_dir, + docker_image, + memory_limit, + num_gpu, + gpu_type, + checkpoint_file=None, +): + """ Create a Kubeflow ContainerOp to train an estimator on the cube sphere dataset. + Args: + gcs_bucket: GCS Bucket where the datasets are located + pose_estimation_gcs_path: Path inside the gcp bucket where the datasets are located + log_dir: path to save the Tensorboard event files. + docker_image (str): Docker image registry URI. + memory_limit (str): Set memory limit for this operator. For simplicity, + we set memory_request = memory_limit. + num_gpu (int): Set the number of GPU for this operator + gpu_type (str): Set the type of GPU + Returns: + kfp.dsl.ContainerOp: Represents an op implemented by a container image + to train an estimator. + """ + + command = ["python", "-m", "pose_estimation.cli"] + arguments = [ + "evaluate", + "--config-file=config.yaml", + "--download-data-gcp=True", + f"--gcs-bucket={gcs_bucket}", + f"--pose-estimation-gcs-path={pose_estimation_gcs_path}", + f"--log-dir={log_dir}", + ] + + evalulate = dsl.ContainerOp( + name="train", image=docker_image, command=command, arguments=arguments, + ) + # GPU + evalulate.set_gpu_limit(num_gpu) + evalulate.add_node_selector_constraint( + "cloud.google.com/gke-accelerator", gpu_type + ) + + evalulate.set_memory_request(memory_limit) + evalulate.set_memory_limit(memory_limit) + + evalulate.apply(gcp.use_gcp_secret("user-gcp-sa")) + + return evalulate + + +@dsl.pipeline( + name="evalulate pipeline", + description="evalulate the model using kubeflow pipeline", +) +def evalulate_pipeline_single_cube( + docker_image: str = "", + gcs_bucket: str = "", + pose_estimation_gcs_path: str = "", + logdir: str = "", +): + + memory_limit = "64Gi" + num_gpu = 1 + gpu_type = "nvidia-tesla-v100" + + # Pipeline definition + evaluate_op( + gcs_bucket=gcs_bucket, + pose_estimation_gcs_path=pose_estimation_gcs_path, + log_dir=logdir, + docker_image=docker_image, + memory_limit=memory_limit, + num_gpu=num_gpu, + gpu_type=gpu_type, + ) + + +if __name__ == "__main__": + import kfp.compiler as compiler + + compiler.Compiler().compile( + evalulate_pipeline_single_cube, __file__ + ".tar.gz" + ) diff --git a/tutorials/pose_estimation/Model/kubeflow/train_pipeline.py b/tutorials/pose_estimation/Model/kubeflow/train_pipeline.py new file mode 100644 index 00000000..878c0d57 --- /dev/null +++ b/tutorials/pose_estimation/Model/kubeflow/train_pipeline.py @@ -0,0 +1,97 @@ +import kfp.dsl as dsl +import kfp.gcp as gcp + + +def train_op( + *, + gcs_bucket, + pose_estimation_gcs_path, + log_dir, + docker_image, + epochs, + memory_limit, + num_gpu, + gpu_type, + checkpoint_file=None, +): + """ Create a Kubeflow ContainerOp to train an estimator on the single cube dataset. + + Args: + gcs_bucket: GCS Bucket where the datasets are located + pose_estimation_gcs_path: Path inside the gcp bucket where the datasets are located + log_dir: path to save the Tensorboard event files. + docker_image (str): Docker image registry URI. + epochs: number of epochs on which we want ot train the model + memory_limit (str): Set memory limit for this operator. For simplicity, + we set memory_request = memory_limit. + num_gpu (int): Set the number of GPU for this operator + gpu_type (str): Set the type of GPU + Returns: + kfp.dsl.ContainerOp: Represents an op implemented by a container image + to train an estimator. + """ + + command = ["python", "-m", "pose_estimation.cli"] + arguments = [ + "train", + "--config-file=config.yaml", + "--download-data-gcp=True", + f"--pose-estimation-gcs-path={pose_estimation_gcs_path}", + f"--gcs-bucket={gcs_bucket}", + f"--epochs={epochs}", + f"--log-dir-system={log_dir}", + ] + + train = dsl.ContainerOp( + name="train", image=docker_image, command=command, arguments=arguments, + ) + # GPU + train.set_gpu_limit(num_gpu) + train.add_node_selector_constraint( + "cloud.google.com/gke-accelerator", gpu_type + ) + + train.set_memory_request(memory_limit) + train.set_memory_limit(memory_limit) + + train.apply(gcp.use_gcp_secret("user-gcp-sa")) + + return train + + +@dsl.pipeline( + name="train pipeline", description="train the model using kubeflow pipeline" +) +def train_pipeline_single_cube( + docker_image: str = "", + gcs_bucket: str = "", + pose_estimation_gcs_path: str = "", + logdir: str = "", + epochs: int = 10, +): + + memory_limit = "64Gi" + num_gpu = 1 + gpu_type = "nvidia-tesla-v100" + + # Pipeline definition + train_op( + gcs_bucket=gcs_bucket, + pose_estimation_gcs_path=pose_estimation_gcs_path, + log_dir=logdir, + docker_image=docker_image, + epochs=epochs, + memory_limit=memory_limit, + num_gpu=num_gpu, + gpu_type=gpu_type, + ) + + + + +if __name__ == "__main__": + import kfp.compiler as compiler + + compiler.Compiler().compile( + train_pipeline_single_cube, __file__ + ".tar.gz" + ) diff --git a/tutorials/pose_estimation/Model/pose_estimation/__init__.py b/tutorials/pose_estimation/Model/pose_estimation/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tutorials/pose_estimation/Model/pose_estimation/__init__.pyc b/tutorials/pose_estimation/Model/pose_estimation/__init__.pyc new file mode 100644 index 00000000..f28c9534 Binary files /dev/null and b/tutorials/pose_estimation/Model/pose_estimation/__init__.pyc differ diff --git a/tutorials/pose_estimation/Model/pose_estimation/cli.py b/tutorials/pose_estimation/Model/pose_estimation/cli.py new file mode 100644 index 00000000..0b47d0ba --- /dev/null +++ b/tutorials/pose_estimation/Model/pose_estimation/cli.py @@ -0,0 +1,143 @@ +""" +Usage: + cli.py train [options] [config] [dataset] [training-options] [hyperparameter-options] [save-options] [loading-options] + cli.py evaluate [options] [config] [dataset] [evaluation-options] [save-options] [loading-options] + +config: + --config-file= Path to the file containing the yaml file for the model configuration. [default: config.yaml] + +dataset: + --sample-size-train= Size of a dataset training sample. It is used to test operations/commands on a few examples. + --sample-size-val= Size of a dataset validation sample. It is used to test operations/commands on a few examples. + --sample-size-test= Size of a dataset test sample. It is used to test operations/commands on a few examples. + --gcs-bucket= Name of GCS Bucket where the datasets are located. + --download-data-gcp= If True it will download the data from gcp otherwise it will use the data you have on local. + --pose-estimation-gcs-path= Path inside the gcp bucket where the datasets are located. + --symmetric=list List of booleans. The length of the list is equal to the number of objects which we want to predict the position. + The order is the one in the capture_*.json with the label_id under captures > annotations > values. + If the object is symmetric then the element is True otherwise it is False. Based on that we will only predict the + orientation or translation and orientation. + +training-options: + --batch-training-size= Batch size of the training dataset. + --batch-validation-size= Batch size of the validation dataset. + --epochs= Number of epoch we want to train the model. + --accumulation-steps= Accumulated Gradients are only updated after X steps. This creates an effective batch size of + batch_size * accumulation_steps. + --checkpoint-freq= Save a model checkpoint every n training iterations. + --dataset-zip-file-name-training= Name of the zip file for the training dataset. + --dataset-zip-file-name-validation= Name of the zip file for the training dataset. + --eval_freq= Frequency to launch the evaluation process + + +evaluation-options: + --batch-test-size= Batch size of the validation dataset. + --dataset-zip-file-name-test= Name of the zip file for the training dataset. + +hyperparameter-options: + --lr= Learning rate for Adam optimization. + --beta-1= Beta1 for the Adam optimization. + --beta-2= Beta2 for the Adam optimization. + --beta-loss= Value of the beta in the weighted loss function. + +save-options: + --log-dir-system= Where to save the Tensorboard event files. + +loading-options: + --load-dir-checkpoint= Path to checkpoint folder from which to load weights and continue training. + --data-root= Upper directory of the data folders (training, evaluation and test) +""" + +from docopt import docopt + +from functools import reduce +import operator + +import torch +from easydict import EasyDict +import yaml + +from .pose_estimation_estimator import PoseEstimationEstimator + + +# PARSE CLI +def _get_config(args): + """Fetches default hyperparameters from provided file, and overwrites + them with any provided command line arguments. + Args: + args (dict): dictionnary created using the docopt libary based on the default + parameters and the parameters entered in the command line + """ + # get default config + config = yaml.load(open(args["--config-file"], "r"), Loader=yaml.FullLoader) + + # overwrite with cli args if provided + config = _overwrite_config(config, args) + + config = EasyDict(config) + return config + + +def _overwrite_config(config, args): + """Overwrites config from yaml file with any matching command line args provided. + If overwriting, casts the command line value to the type of the corresponding default config value. + Args: + config (dict): Dictionary from parsed yaml file. May be nested. Keys expected to be snake_case. + args (dict): Dictionary from parsed command line arguments. Keys expected to be in --this-format. + Returns: + config (dict): Config with appropriate values overwritten. + """ + assert type(config) == dict + + for key, value in config.items(): + + # recurse if found nested dictionary + if type(value) == dict: + result = _overwrite_config(value, args) + config[key] = result + + # overwrite config if necessary + else: + arg_key = _arg_from_snakecase_key(key) + arg_val = args.get(arg_key) + if arg_val: + config_val = config[key] + arg_val = type(config_val)(arg_val) + config[key] = arg_val + + return config + + +def _arg_from_snakecase_key(snakecase_key): + """Converts input snake case to command line argument format. + Args: + snakecase_key (string): Expected to be in this_format. + Returns: + string: Converted to --this-format. + """ + key = snakecase_key.replace("_", "-") + key = "--" + key + return key + + +## MAIN +def main(): + args = docopt(__doc__) + config = _get_config(args) + + estimator = PoseEstimationEstimator(config=config) + + print("device: ", estimator.device) + + if args["train"]: + estimator.train() + elif args["evaluate"]: + estimator.evaluate() + else: + print("command not found!") + + estimator.writer.done() + + +if __name__ == "__main__": + main() diff --git a/tutorials/pose_estimation/Model/pose_estimation/evaluate.py b/tutorials/pose_estimation/Model/pose_estimation/evaluate.py new file mode 100644 index 00000000..640a2fe8 --- /dev/null +++ b/tutorials/pose_estimation/Model/pose_estimation/evaluate.py @@ -0,0 +1,204 @@ +import torch +import torchvision + +from pose_estimation.single_cube_dataset import SingleCubeDataset +from pose_estimation.evaluation_metrics.translation_average_mean_square_error import ( + translation_average_mean_square_error, +) +from pose_estimation.evaluation_metrics.orientation_average_quaternion_error import ( + orientation_average_quaternion_error, +) + + +def evaluate_model(estimator): + """ + Do the evaluation process for the estimator + + Args: + estimator: pose estimation estimator + """ + config = estimator.config + + dataset_test = SingleCubeDataset( + config=config, + split="test", + zip_file_name=config.test.dataset_zip_file_name_test, + data_root=config.system.data_root, + sample_size=config.test.sample_size_test, + ) + + estimator.logger.info("Start evaluating estimator: %s", type(estimator).__name__) + + test_loader = torch.utils.data.DataLoader( + dataset_test, + batch_size=config.test.batch_test_size, + num_workers=0, + drop_last=False, + ) + + estimator.model.to(estimator.device) + evaluate_one_epoch( + estimator=estimator, + config=config, + data_loader=test_loader, + epoch=0, + test=True, + ) + + +def evaluate_one_epoch(*, estimator, config, data_loader, epoch, test): + """Evaluation of the model on one epoch + Args: + estimator: pose estimation estimator + config: configuration of the model + data_loader (DataLoader): pytorch dataloader + epoch (int): the current epoch number + test (bool): specifies which type of evaluation we are doing + """ + estimator.model.eval() + estimator.logger.info(f" evaluation started") + + metric_translation = 0.0 + metric_orientation = 0.0 + + if test: + batch_size = config.test.batch_test_size + elif test == False: + batch_size = config.val.batch_validation_size + else: + raise ValueError(f"You need to specify a boolean value for the test argument") + + number_batches = len(data_loader) / batch_size + with torch.no_grad(): + metric_translation, metric_orientation = evaluation_over_batch( + estimator=estimator, + config=config, + data_loader=data_loader, + batch_size=batch_size, + epoch=epoch, + is_training=False, + ) + + estimator.writer.log_evaluation( + evaluation_metric_translation=metric_translation, + evaluation_metric_orientation=metric_orientation, + epoch=epoch, + test=test, + ) + + +# HELPER +def evaluation_over_batch( + *, + estimator, + config, + data_loader, + batch_size, + epoch, + is_training=True, + optimizer=None, + criterion_translation=None, + criterion_orientation=None, +): + """ + Do the training process for all the estimators (one for each class) + + Args: + estimator: pose estimation estimator + config: configuration of the model + data_loader (DataLoader): pytorch dataloader + batch_size (int): size of the batch + epoch (int): the current epoch number + is_training (bool): boolean to say if we are in a training process or not + optimizer: optimizer of the model + criterion_translation (torch.nn): criterion for the evaluation of the translation loss + criterion_orientation torch.nn: criterion for the evaluation of the orientation loss + """ + + sample_size = config.train.sample_size_train if is_training else config.val.sample_size_val + len_data_loader = sample_size if (sample_size > 0) else len(data_loader) + + metric_translation = 0 + metric_orientation = 0 + + for index, (images, target_translation_list, target_orientation_list) in enumerate( + data_loader + ): + images = list(image.to(estimator.device) for image in images) + + loss_translation = 0 + loss_orientation = 0 + + if estimator.model.is_symetric == False: + output_translation, output_orientation = estimator.model( + torch.stack(images).reshape( + -1, 3, config.dataset.image_scale, config.dataset.image_scale + ) + ) + + target_translation = target_translation_list.to(estimator.device) + target_orientation = target_orientation_list.to(estimator.device) + + metric_translation += translation_average_mean_square_error( + output_translation, target_translation + ) + + metric_orientation += orientation_average_quaternion_error( + output_orientation, target_orientation + ) + + intermediate_mean_loss_translation = metric_translation / (index + 1) + intermediate_mean_loss_orientation = metric_orientation / (index + 1) + estimator.logger.info( + f"intermediate mean translation loss after mini batch {index + 1} in epoch {epoch} is: {intermediate_mean_loss_translation}" + ) + estimator.logger.info( + f"intermediate mean orientation loss after mini batch {index + 1} in epoch {epoch} is: {intermediate_mean_loss_orientation}" + ) + + if is_training: + loss_translation += criterion_translation( + output_translation, target_translation + ) + loss_orientation += criterion_orientation( + output_orientation, target_orientation + ) + train_loss = ( + loss_translation + config.train.beta_loss * loss_orientation + ) + + else: + output_translation = estimator.model( + torch.stack(images).reshape( + -1, 3, config.dataset.image_scale, config.dataset.image_scale + ) + ) + + target_translation = target_translation_list.to(estimator.device) + + metric_translation += translation_average_mean_square_error( + output_translation, target_translation + ) + + intermediate_mean_loss_translation = metric_translation / (index + 1) + estimator.logger.info( + f"intermediate mean translation loss after mini batch {index + 1} in epoch {epoch} is: {intermediate_mean_loss_translation}" + ) + + if is_training: + loss_translation += criterion_translation( + output_translation, target_translation + ) + train_loss = loss_translation + + if is_training: + train_loss.backward() + + if (index + 1) % config.train.accumulation_steps == 0: + optimizer.step() + optimizer.zero_grad() + + metric_translation = metric_translation / len_data_loader + metric_orientation = metric_orientation / len_data_loader + + return metric_translation, metric_orientation diff --git a/tutorials/pose_estimation/Model/pose_estimation/evaluation_metrics/__init__.py b/tutorials/pose_estimation/Model/pose_estimation/evaluation_metrics/__init__.py new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/tutorials/pose_estimation/Model/pose_estimation/evaluation_metrics/__init__.py @@ -0,0 +1 @@ + diff --git a/tutorials/pose_estimation/Model/pose_estimation/evaluation_metrics/orientation_average_quaternion_error.py b/tutorials/pose_estimation/Model/pose_estimation/evaluation_metrics/orientation_average_quaternion_error.py new file mode 100644 index 00000000..7e612f2d --- /dev/null +++ b/tutorials/pose_estimation/Model/pose_estimation/evaluation_metrics/orientation_average_quaternion_error.py @@ -0,0 +1,54 @@ +r"""Orientation Average Quaternion error metric. + +The orientation average quaternion error is the mean of the quaternion loss over a batch of examples. +It is used as a metric for the orientation's prediction. +In this project, the cube is only rotating around the y-axis so we can define the quaternion loss +as the angle between the orientation of the prediction and the orientation of the target: +angle = arccos(2 * (**2) - 1) + +Where <.> denotes the scalar product between two vectors and it is define as the distance between two +quaternions. +They are three cases: +- cos(angle) is above 0.999 (arbitrary threeshold but needs to be very close to 1) then the loss is 0 +- cos(angle) is below -0.999 (arbitrary threeshold but needs to be very close to -1), then the loss is pi/2 +- cos(angle) is betwwen -0.999 and 0.999 then the loss is equal to the angle + +In this project, I only use 2 out of the 4 coordinates of the quaternion because as there are only rotations +around the y-axis, the coordinates q_x and q_z are equal to 0 in the configuration (q_w, q_x, q_y, q_z) + +""" +import numpy as np + +import torch + + +def orientation_average_quaternion_error(output, target): + """ + Attributes: + output (tensor of shape (batch size, 2)): it is the model's prediction + for all the images in a batch + target (tensor of shape (batch_size, 2)): it is the target + Return: + metric translation is a scalar + """ + if target.shape != output.shape: + raise ValueError( + f"The shapes of real data {target.shape} and predicted data {output.shape} \ + should be the same." + ) + + batch_size = target.shape[0] + + metric_orientation = 0 + for index in range(batch_size): + distance_quaternion = torch.dot(target[index], output[index]) + cos_angle = 2 * torch.mul(distance_quaternion, distance_quaternion).item() - 1 + + if cos_angle <= -0.999: + metric_orientation += np.pi / 2 + elif -0.999 < cos_angle < 0.999: + metric_orientation += np.arccos(cos_angle) + + metric_orientation = metric_orientation / batch_size + + return metric_orientation diff --git a/tutorials/pose_estimation/Model/pose_estimation/evaluation_metrics/translation_average_mean_square_error.py b/tutorials/pose_estimation/Model/pose_estimation/evaluation_metrics/translation_average_mean_square_error.py new file mode 100644 index 00000000..e8c0c60c --- /dev/null +++ b/tutorials/pose_estimation/Model/pose_estimation/evaluation_metrics/translation_average_mean_square_error.py @@ -0,0 +1,30 @@ +r"""Translation Average Mean Square Error metrics. + +The translation average mean square error is the mean of the mse loss over a batch of examples. +It is used as a metric for the translation's prediction +""" + +import torch + + +def translation_average_mean_square_error(output, target): + """ + Attributes: + output (tensor of shape (batch size, 3)): it is the model's prediction + for all the images in a batch + target (tensor of shape (batch_size, 3)): it is the target + Return: + metric translation is a scalar + """ + + if target.shape != output.shape: + raise ValueError( + f"The shapes of real data {target.shape} and predicted data {output.shape} \ + should be the same." + ) + + square_diffs = (target - output) ** 2 + norms = torch.mean(square_diffs, 1) + metric_translation = torch.mean(norms, axis=-1).item() + + return metric_translation diff --git a/tutorials/pose_estimation/Model/pose_estimation/logger.py b/tutorials/pose_estimation/Model/pose_estimation/logger.py new file mode 100644 index 00000000..3f786327 --- /dev/null +++ b/tutorials/pose_estimation/Model/pose_estimation/logger.py @@ -0,0 +1,96 @@ +from tensorboardX import SummaryWriter +import os + + +class Logger: + def __init__(self, *, log_dir, config): + self.writer = SummaryWriter(log_dir, write_to_disk=True) + self.config = config + + def log_training( + self, + *, + training_metric_translation, + training_metric_orientation, + epoch, + ): + """ + Write the training translation and orientation error in the writer object to + print it out on tensorboard for each epoch + + Args: + training_metric_translation (float): error on the translation calculated on one training epoch + training_metric_orientation (float): error on the orientation calculated on one training epoch + epoch (int): number of the current epoch + """ + # loss training + self.writer.add_scalar( + f"training/loss_translation", + training_metric_translation, + epoch, + ) + + if self.config.dataset.symmetric == False: + self.writer.add_scalar( + f"training/loss_orientation", + training_metric_orientation, + epoch, + ) + + def log_evaluation( + self, + *, + evaluation_metric_translation, + evaluation_metric_orientation, + epoch, + test, + ): + """ + Write the evaluatin translation and orientation error in the writer object to + print it out on tensorboard for each epoch. It is the validation translation and orientation + error if we evaluate on the validation dataset and it is the test translation and orientation + error if we evaluate it on the test set + + Args: + evaluation_metric_translation (float): error on the translation calculated on one validation epoch + evaluation_metric_orientation (float): error on the orientation calculated on one validation epoch + epoch (int): number of the current epoch + test (bool): specify if it is an evaluation in the training framework or in the test one. + """ + + if test: + # loss test + self.writer.add_scalar( + f"test/loss_translation", evaluation_metric_translation + ) + if self.config.dataset.symmetric == False: + self.writer.add_scalar( + f"test/loss_orientation", + evaluation_metric_orientation, + ) + else: + # loss validation + self.writer.add_scalar( + f"val/loss_translation", + evaluation_metric_translation, + epoch, + ) + + if self.config.dataset.symmetric == False: + self.writer.add_scalar( + f"val/loss_orientation", + evaluation_metric_orientation, + epoch, + ) + + def done(self): + """ + Close the writer after the whole training + evaluation + """ + self.writer.close() + + +# HELPER +def is_master(): + rank = int(os.getenv("RANK", 0)) + return rank == 0 diff --git a/tutorials/pose_estimation/Model/pose_estimation/model.py b/tutorials/pose_estimation/Model/pose_estimation/model.py new file mode 100644 index 00000000..bc4d927a --- /dev/null +++ b/tutorials/pose_estimation/Model/pose_estimation/model.py @@ -0,0 +1,90 @@ +import torch +import torchvision + + +def preload(): + '''pre-load VGG model weights, for transfer learning. Automatically cached for later use.''' + torchvision.models.vgg16(pretrained=True) + + +class PoseEstimationNetwork(torch.nn.Module): + """ + PoseEstimationNetwork: Neural network based on the VGG16 neural network + architecture developed by Tobin at al. (https://arxiv.org/pdf/1703.06907.pdf). + The model is a little bit different from the original one + but we still import the model as it has already been trained on a huge + dataset (ImageNet) and even if we change a bit its architecture, the main + body of it is unchanged and the weights of the final model will not be too + far from the original one. We call this method "transfer learning". + The network is composed by two branches: one for the translation + (prediction of a 3 dimensional vector corresponding to x, y, z coordinates) and + one for the orientation (prediction of a 4 dimensional vector corresponding to + a quaternion) + """ + + def __init__(self, *, is_symetric): + super(PoseEstimationNetwork, self).__init__() + self.is_symetric = is_symetric + self.model_backbone = torchvision.models.vgg16(pretrained=True) # uses cache + # remove the original classifier + self.model_backbone.classifier = torch.nn.Identity() + + self.translation_block = torch.nn.Sequential( + torch.nn.Linear(25088, 256), + torch.nn.ReLU(inplace=True), + torch.nn.Linear(256, 64), + torch.nn.ReLU(inplace=True), + torch.nn.Linear(64, 3), + ) + self.orientation_block = torch.nn.Sequential( + torch.nn.Linear(25088, 256), + torch.nn.ReLU(inplace=True), + torch.nn.Linear(256, 64), + torch.nn.ReLU(inplace=True), + torch.nn.Linear(64, 4), + LinearNormalized(), + ) + + def forward(self, x): + x = self.model_backbone(x) + output_translation = self.translation_block(x) + + if self.is_symetric == False: + output_orientation = self.orientation_block(x) + return output_translation, output_orientation + + return output_translation + + +class LinearNormalized(torch.nn.Module): + """ + Custom activation function which normalizes the input. + It will be used to normalized the output of the orientation + branch in our model because a quaternion vector is a + normalized vector + """ + + def __init__(self): + super(LinearNormalized, self).__init__() + + def forward(self, x): + return self._linear_normalized(x) + + def _linear_normalized(self, x): + """ + Activation function which normalizes an input + It will be used in the orientation network because + a quaternion is a normalized vector. + Args: + x (pytorch tensor with shape (batch_size, 4)): the input of the model + Returns: + a pytorch tensor normalized vector with shape(batch_size, 4) + """ + norm = torch.norm(x, p=2, dim=1).unsqueeze(0) + for index in range(norm.shape[1]): + if norm[0, index].item() == 0.0: + norm[0, index] = 1.0 + x = torch.transpose(x, 0, 1) + x = torch.div(x, norm) + return torch.transpose(x, 0, 1) + diff --git a/tutorials/pose_estimation/Model/pose_estimation/pose_estimation_estimator.py b/tutorials/pose_estimation/Model/pose_estimation/pose_estimation_estimator.py new file mode 100644 index 00000000..0871d626 --- /dev/null +++ b/tutorials/pose_estimation/Model/pose_estimation/pose_estimation_estimator.py @@ -0,0 +1,123 @@ +import copy +import os +import logging +from pose_estimation.logger import Logger +from .storage.checkpoint import EstimatorCheckpoint + +from pose_estimation.model import PoseEstimationNetwork +from pose_estimation.train import train_model +from pose_estimation.evaluate import evaluate_model +from pose_estimation.single_cube_dataset import SingleCubeDataset +from pose_estimation.evaluation_metrics.translation_average_mean_square_error import ( + translation_average_mean_square_error, +) +from pose_estimation.evaluation_metrics.orientation_average_quaternion_error import ( + orientation_average_quaternion_error, +) + +import torch +import torchvision + + +class PoseEstimationEstimator: + """ + This model is used on the SingleCube dataset. + Its aim is to predict the position and the orientation of the cube. + This class contains the method to train, evaluate, save and load the model. + + + Attributes: + config (dict): estimator config + data_root (str): path towards the data + writer: Tensorboard writer object + checkpointer: Model checkpointer callback to save models + device: model training on device (cpu|cuda) + logger (Logger object form the class in logger.py): Log the performance + model (lsit): list of the PoseEstimationNetwork where the length is equal + to the number of classes + """ + + def __init__(self, *, config, **kwargs): + + self.config = config + self.data_root = config.system.data_root + self.writer = Logger( + log_dir=self.config.system.log_dir_system, + config=config, + ) + print("writer log:", config.system.log_dir_system) + + self.checkpointer = EstimatorCheckpoint( + estimator_name=self.config.estimator, log_dir=config.system.log_dir_system, + ) + self.device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") + + # logging config + logging.basicConfig( + level=logging.INFO, + format=( + "%(levelname)s | %(asctime)s | %(name)s | %(threadName)s | " + "%(message)s" + ), + datefmt="%Y-%m-%d %H:%M:%S", + ) + self.logger = logging.getLogger(__name__) + + # We will create as many networks as there are objects to predict the position + self.model = PoseEstimationNetwork(is_symetric=config.dataset.symmetric) + + # load estimators from file if checkpoint_file exists + checkpoint_file = config.checkpoint.load_dir_checkpoint + if checkpoint_file != "None": + self.checkpointer.load(self, checkpoint_file) + + def train(self): + """ + This method is to train the PoseEstimationEstimator model + """ + self.logger.info("Start training") + train_model(self) + + def evaluate(self): + """ + This method is to evaluate the PoseEstimationEstimator model + """ + self.logger.info("Start evaluation") + evaluate_model(self) + + def save(self, path): + """Save all models into a directory + + Args: + path (str): full path to save serialized estimator + + Returns: + saved full path of the serialized estimator + """ + save_dict = { + "model": self.model.state_dict(), + "config": self.config, + } + torch.save(save_dict, path) + + def load(self, path): + """Load Estimator from path + + Args: + path (str): full path to the serialized estimator + label_id (int): corresponds to the label id in the captures_*.json folder minus 1. + """ + self.logger.info(f"loading checkpoint from file") + checkpoint = torch.load(path, map_location=self.device) + self.model.load_state_dict(checkpoint["model"]) + + loaded_config = copy.deepcopy(checkpoint["config"]) + stored_config = copy.deepcopy(self.config) + del stored_config["checkpoint"]["load_dir_checkpoint"] + if stored_config != loaded_config: + self.logger.warning( + f"Found difference in estimator config." + f"Estimator loaded from {path} was trained using config: " + f"{loaded_config}. However, the current config is: " + f"{self.config}." + ) diff --git a/tutorials/pose_estimation/Model/pose_estimation/single_cube_dataset.py b/tutorials/pose_estimation/Model/pose_estimation/single_cube_dataset.py new file mode 100644 index 00000000..294028b9 --- /dev/null +++ b/tutorials/pose_estimation/Model/pose_estimation/single_cube_dataset.py @@ -0,0 +1,333 @@ +import os +from pathlib import Path +import zipfile +import json +import glob + +import numpy as np + +import torch +import torchvision + +from PIL import Image +import random + +from pose_estimation.storage.gcs import GCSClient + +import logging + +logger = logging.getLogger(__name__) + + +class SingleCubeDataset(torch.utils.data.IterableDataset): + """ + This class is made to create a SingleCubeDataset object which is an + object corresponding to the dataset we want to use to feed our + deep learning model. We need to create the object as an + Iterable Dataset object for two main reasons: + - using an iterator enables to save memory problem. We don't + have to stock in memory the whole dataset at each iteration + of the model. The only useful data for a given iteration is + the batch size we are dealing with + - in pytorch, to feed a machine learning model, you need to + create a DataLoader object. The DataLoader object takes + as input a Dataset object or an IterableDataset object. + Nevertheless, you can't use an iterator with the Dataset + object + + Attributes: + config: configuration of the model + data_root (str): root path towards the data file + split (str): specify which type of dataset we + have access to + zip_file_name (str): name of the data zip file + sample_size (int): size of the batch dataset we want to create. + This attribute is used if you want to test your model on a very + small amount of data. It is a subset of the whole dataset + """ + + def __init__( + self, + *, + config, + data_root="/tmp", + split="train", + zip_file_name="single_cube_training", + sample_size=0, + **kwargs, + ): + self.config = config + + self.data_root = data_root + self.zip_file_name = zip_file_name + self.root = os.path.join(data_root, self.zip_file_name) + + if self.config.dataset.download_data_gcp: + self.pose_estimation_gcs_path = self.config.dataset.pose_estimation_gcs_path + self.gcs_bucket = self.config.dataset.gcs_bucket + self._download() + + self.size = self.__len__() + self.sample_size = min(sample_size, self.size) + if self.sample_size > 0: + self.random_indices = self._generate_random_indices() + + def pre_processing(self, element_iterator): + """ + Do some pre-processing of the data in order to feed to the + neural network + + Args: + element_iterator: iterator on the data files + + Returns: + a tuple of three element which are: + - an image tensor + - a tensor vector for the 3 cube's center + coordinates (translation) + - a the tensor vector for the 4 quaternion elements + (orientation) + """ + position_list, image_name = element_iterator + + translation = list(position_list[0]["translation"].values()) + orientation = list(position_list[0]["rotation"].values()) + translation = torch.tensor(translation, dtype=torch.float) + orientation = torch.tensor(orientation, dtype=torch.float) + + image_origin = Image.open(image_name).convert("RGB") + transform = self.get_transform() + image = transform(image_origin).unsqueeze(0) + + return image, translation, orientation + + def __iter__(self): + """ + Mandatory method in order to create an IterableDataset object. + + Returns: + an iterator over the data after the pre-processing. + It can return a batch of the data if we specify a value + for the "sample_size" attribute + """ + iterator = RawDataIterator(path=self.root) + + # Map each element + mapped_itr = map(self.pre_processing, iterator) + + if self.sample_size > 0: + mapped_itr = self._sample(mapped_itr) + + return mapped_itr + + def __len__(self): + """ + Method to have the number of rows of the dataset + + Returns: + (int): length of the dataset + """ + for folder in os.listdir(self.root): + if folder.startswith("RGB"): + return len(os.listdir(os.path.join(self.root, folder))) + + def _sample(self, iterator): + """ + Method to create an iterator over a batch of a dataset + + Args: + iterator: an iterator over a dataset + + Returns: + an iterator over the batch dataset + """ + result = [] + for index, element in enumerate(iterator): + if index in self.random_indices: + result.append(element) + return iter(result) + + def _generate_random_indices(self): + """ + Method to generate a list of int between 0 and self.size and + of length self.sample_size + + Returns: + list of int which corresponds to a list of indexes + """ + indices = random.sample(range(0, self.size), self.sample_size) + return indices + + def _get_local_data_zip(self): + """ + Create a local path for download zip file + + Returns: + a str path toward the local data zip file + """ + return os.path.join(self.root, f"{self.zip_file_name}.zip") + + def _download(self): + """ + Method to download dataset from GCS + """ + path = Path(self.root) + path.mkdir(parents=True, exist_ok=True) + client = GCSClient() + object_key = os.path.join( + self.pose_estimation_gcs_path, f"{self.zip_file_name}.zip" + ) + + data_zip_local = self._get_local_data_zip() + if not os.path.exists(data_zip_local): + logger.info(f"no data zip file found, will download.") + client.download( + bucket_name=self.gcs_bucket, + object_key=object_key, + localfile=data_zip_local, + ) + with zipfile.ZipFile(data_zip_local, "r") as zip_dir: + zip_dir.extractall(f"{self.root}") + + def get_transform(self): + """ + Apply a transform on the input image tensor + + Returns: + https://pytorch.org/docs/stable/torchvision/transforms.html + """ + transform = torchvision.transforms.Compose( + [ + torchvision.transforms.Resize( + (self.config.dataset.image_scale, self.config.dataset.image_scale,) + ), + torchvision.transforms.ToTensor(), + ] + ) + return transform + + +class RawDataIterator: + """ + This class is made to create a RawDataIterator object which is + an object corresponding to an iterator over a folder to + extract the data you want. + + Attributes: + log_index (int): index of the log file + line_index (int): index of the line in the json file + base_path (str): path towards the data folder which + contains the Logs and the ScreenCapture folders + log_folder_path (str): path towards the Dataset folder in your saved data + """ + + def __init__(self, path): + self.log_index = 0 + self.image_index = 0 + self.base_path = path + for file in os.listdir(path): + if file.startswith("Dataset"): + self.log_folder_path = os.path.join(path, file) + + def __iter__(self): + """ + Mandatory method in order to create an Iterator object. + """ + return self + + def __next__(self): + """ + Mandatory method in order to create an Iterator object. + + Returns: + a tuple corresponding to the data as a dictionnary and the + path towards the corresponding images + """ + path = self._log_path() + if os.path.exists(path): + file = open(path) + data = json.load(file) + if self.image_index >= len(data["captures"]): + # move to next log file + self.log_index += 1 + self.image_index = 0 + return self.__next__() + else: + # get results + if self._fetch_results(data): + data_list, image_path = self._fetch_results(data) + self.image_index += 1 + return (data_list, image_path) + self.image_index += 1 + return self.__next__() + raise StopIteration + + # HELPERS + + def _fetch_results(self, data): + """ + Extract the result for a given line of a file + + Attribute: + data (json object): https://www.geeksforgeeks.org/json-load-in-python/ + it is the data file + + Example: + "filename": "RGB33aa3f79-f2dc-47a3-b631-fb80dcacdb29/rgb_2.png", + "format": "PNG", + "annotations": [ + { + "id": "c6294393-a40c-4466-8cab-9c79c799c436", + "annotation_definition": "0bfbe00d-00fa-4555-88d1-471b58449f5c", + "values": [ + { + "label_id": 1, + "label_name": "cube_position", + "instance_id": 1, + "translation": { + "x": -0.34494638442993164, + "y": -0.10846114158630371, + "z": 1.7134368419647217 + }, + "size": { + "x": 0.099999994039535522, + "y": 0.099999994039535522, + "z": 0.099999994039535522 + }, + "rotation": { + "x": -0.11946356296539307, + "y": 0.714719831943512, + "z": -0.12602438032627106, + "w": 0.67751163244247437 + } + + Returns: + a tuple corresponding to the data as a list of dictionary and the + path towards the corresponding images + """ + + data_list = [] + data_capture = data["captures"][self.image_index] + values = data_capture["annotations"][0]["values"] + if len(values) > 0: + for classes in data_capture["annotations"][0]["values"]: + data_list.append(classes) + + image_local_path = data_capture["filename"] + image_path = os.path.join(self.base_path, image_local_path) + return (data_list, image_path) + + def _log_path(self): + """ + Give the path towards the Logs file inside the data folder + + Return: + path (str): path towards the Logs file + """ + if self.log_index < 10: + path = "{}/captures_00{}.json".format(self.log_folder_path, self.log_index) + elif self.log_index < 100: + path = "{}/captures_0{}.json".format(self.log_folder_path, self.log_index) + else: + path = "{}/captures_{}.json".format(self.log_folder_path, self.log_index) + return path diff --git a/tutorials/pose_estimation/Model/pose_estimation/storage/__init__.py b/tutorials/pose_estimation/Model/pose_estimation/storage/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tutorials/pose_estimation/Model/pose_estimation/storage/checkpoint.py b/tutorials/pose_estimation/Model/pose_estimation/storage/checkpoint.py new file mode 100644 index 00000000..67cbda76 --- /dev/null +++ b/tutorials/pose_estimation/Model/pose_estimation/storage/checkpoint.py @@ -0,0 +1,247 @@ +""" Save estimator checkpoints +""" +import logging +import os +import tempfile + +from pose_estimation.storage.download import download_file + +from .gcs import GCSClient, gcs_bucket_and_path + +logger = logging.getLogger(__name__) + +DEFAULT_SUFFIX = ".tar" +GCS_BASE_STR = "gs://" +HTTP_URL_BASE_STR = "http://" +HTTPS_URL_BASE_STR = "https://" + + +class EstimatorCheckpoint: + """Saves and loads estimator checkpoints. + + Assigns estimator checkpoint writer according to log_dir which is + responsible for saving estimators. Writer can be a GCS or local writer. + Assigns loader which is responsible for loading estimator from a given + path. Loader can be a local, GCS or HTTP loader. + + Args: + estimator_name (str): name of the estimator + log_dir (str): log directory + + Attributes: + log_dir (str): log directory + + """ + + def __init__(self, estimator_name, log_dir): + self._writer = self._create_writer(log_dir, estimator_name) + + @staticmethod + def _create_writer(log_dir, estimator_name): + """Creates writer object for saving checkpoints based on log_dir. + + Args: + log_dir: Directory where logging happens. + estimator_name: Name of the estimator. + + Returns: + Writer object (GCS or Local). + """ + if log_dir.startswith(GCS_BASE_STR): + writer = GCSEstimatorWriter(log_dir, estimator_name) + else: + writer = LocalEstimatorWriter(log_dir, estimator_name) + + return writer + + @staticmethod + def _get_loader_from_path(path): + """Gives loader method to load an estimator from a given path. + + Arguments: + path: Path of the estimator. Can be local, GCS or HTTP path. + + Returns: + Loader method for loading estimator according to the given path. + """ + if path.startswith((HTTP_URL_BASE_STR, HTTPS_URL_BASE_STR)): + method = load_from_http + elif path.startswith(GCS_BASE_STR): + method = load_from_gcs + elif path.startswith("/"): + method = load_local + else: + raise ValueError( + f"Given path: {path}, is either invalid or not supported." + f"Currently supported path are local path (/path/to/file), " + f"GCS path (gs://) and HTTP url (http:// or https://) path" + ) + + return method + + def save(self, estimator, epoch): + """Save estimator to the log_dir. + + Args: + estimator (datasetinsights.estimators.Estimator): + datasetinsights estimator object. + epoch (int): Epoch number. + + """ + self._writer.save(estimator=estimator, epoch=epoch) + + def load(self, estimator, path): + """Loads estimator from given path. + + Path can be either a local path or GCS path or HTTP url. + + Args: + estimator (datasetinsights.estimators.Estimator): + datasetinsights estimator object + path (str): path of estimator + + """ + load_method = self._get_loader_from_path(path) + load_method(estimator, path) + + +class LocalEstimatorWriter: + """Writes (saves) estimator checkpoints locally. + + Args: + dirname (str): Directory where estimator is to be saved. + prefix (str): Filename prefix of the checkpoint files. + suffix (str): Filename suffix of the checkpoint files. + create_dir (bool): Flag for creating new directory. Default: True. + + Attributes: + dirname (str): directory name of where checkpoint files are stored + prefix (str): filename prefix of the checkpoint files + suffix (str): filename suffix of the checkpoint files + + """ + + def __init__(self, dirname, prefix, *, suffix=DEFAULT_SUFFIX, create_dir=True): + self.dirname = dirname + self.prefix = prefix + self.suffix = suffix + if create_dir: + if not os.path.exists(dirname): + os.makedirs(dirname) + + if not os.path.exists(dirname): + raise ValueError(f"Directory path '{dirname}' is not found.") + + def save(self, estimator, epoch=None): + """Save estimator to locally to log_dir. + + Args: + estimator (datasetinsights.estimators.Estimator): + datasetinsights estimator object. + epoch (int): The current epoch number. Default: None + + Returns: + Full path to the saved checkpoint file. + + """ + if epoch: + filename = "".join( + [self.prefix, f"_ep{epoch}", self.suffix] + ) + else: + filename = "".join([self.prefix, self.suffix]) + path = os.path.join(self.dirname, filename) + + logger.debug(f"Saving estimator to {path}") + estimator.save(path) + + return path + + +class GCSEstimatorWriter: + """Writes (saves) estimator checkpoints on GCS. + + Args: + cloud_path (str): GCS cloud path (e.g. gs://bucket/path/to/directoy) + prefix (str): filename prefix of the checkpoint files + suffix (str): filename suffix of the checkpoint files + + """ + + def __init__(self, cloud_path, prefix, *, suffix=DEFAULT_SUFFIX): + self._tempdir = tempfile.TemporaryDirectory().name + self._client = GCSClient() + self._bucket, self._gcs_path = gcs_bucket_and_path(cloud_path) + self._writer = LocalEstimatorWriter( + self._tempdir, prefix, create_dir=True, suffix=suffix + ) + + def save(self, estimator, epoch=None): + """Save estimator to checkpoint files on GCS. + + Args: + estimator (datasetinsights.estimators.Estimator): + datasetinsights estimator object. + epoch (int): the current epoch number. Default: None + + Returns: + Full GCS cloud path to the saved checkpoint file. + + """ + path = self._writer.save(estimator, epoch) + filename = os.path.basename(path) + object_key = os.path.join(self._gcs_path, filename) + + full_cloud_path = f"gs://{self._bucket}/{object_key}" + logger.info(f"path: {path}") + logger.info(f"filename : {filename}") + logger.info(f"object key: {object_key}") + + logger.debug(f"Copying estimator from {path} to {full_cloud_path}") + self._client.upload(path, self._bucket, object_key) + + return full_cloud_path + + +# HELPER +def load_local(estimator, path): + """Loads estimator checkpoints from a local path.""" + estimator.load(path) + + return path + + +def load_from_gcs(estimator, full_cloud_path): + """Load estimator from checkpoint files on GCS. + + Args: + estimator (datasetinsights.estimators.Estimator): + datasetinsights estimator object. + full_cloud_path: full path to the checkpoint file + + """ + bucket, object_key = gcs_bucket_and_path(full_cloud_path) + filename = os.path.basename(object_key) + with tempfile.TemporaryDirectory() as temp_dir: + path = os.path.join(temp_dir, filename) + logger.debug(f"Downloading estimator from {full_cloud_path} to {path}") + client = GCSClient() + client.download(bucket, object_key, path) + estimator.load(path) + + +def load_from_http(estimator, url): + """Load estimator from checkpoint files on GCS. + + Args: + estimator (datasetinsights.estimators.Estimator): + datasetinsights estimator object. + url: URL of the checkpoint file + + """ + with tempfile.TemporaryDirectory() as temp_dir: + path = os.path.join(temp_dir, "estimator_checkpoint") + logger.debug(f"Downloading estimator from {url} to {path}") + download_file(source_uri=url, dest_path=path) + logger.debug(f"Loading estimator from {path}") + estimator.load(path) diff --git a/tutorials/pose_estimation/Model/pose_estimation/storage/download.py b/tutorials/pose_estimation/Model/pose_estimation/storage/download.py new file mode 100644 index 00000000..a7fd683f --- /dev/null +++ b/tutorials/pose_estimation/Model/pose_estimation/storage/download.py @@ -0,0 +1,109 @@ +import logging +import zlib +from pathlib import Path + +import requests +from requests.adapters import HTTPAdapter +from requests.packages.urllib3.util.retry import Retry + +from .exceptions import ChecksumError, DownloadError + +logger = logging.getLogger(__name__) + +# Timeout of requests (in seconds) +DEFAULT_TIMEOUT = 1800 +# Retry after failed request +DEFAULT_MAX_RETRIES = 5 + + +class TimeoutHTTPAdapter(HTTPAdapter): + def __init__(self, timeout, *args, **kwargs): + self.timeout = timeout + super().__init__(*args, **kwargs) + + def send(self, request, **kwargs): + kwargs["timeout"] = self.timeout + return super().send(request, **kwargs) + + +def download_file(source_uri: str, dest_path: str, use_cache: bool = True): + """Download a file specified from a source uri + + Args: + source_uri (str): source url where the file should be downloaded + dest_path (str): destination path of the file + use_cache (bool): use_cache (bool): use cache instead of + re-download if file exists + + Returns: + String of destination path. + """ + dest_path = Path(dest_path) + if dest_path.exists() and use_cache: + return dest_path + + logger.debug(f"Trying to download file from {source_uri} -> {dest_path}") + adapter = TimeoutHTTPAdapter( + timeout=DEFAULT_TIMEOUT, max_retries=Retry(total=DEFAULT_MAX_RETRIES) + ) + with requests.Session() as http: + http.mount("https://", adapter) + try: + response = http.get(source_uri) + response.raise_for_status() + except requests.exceptions.RequestException as ex: + logger.error(ex) + err_msg = ( + f"The request download from {source_uri} -> {dest_path} can't " + f"be completed." + ) + + raise DownloadError(err_msg) + else: + dest_path.parent.mkdir(parents=True, exist_ok=True) + with open(dest_path, "wb") as f: + f.write(response.content) + + return dest_path + + +def validate_checksum(filepath, expected_checksum, algorithm="CRC32"): + """Validate checksum of the downloaded file. + + Args: + filepath (str): the doaloaded file path + expected_checksum (int): expected checksum of the file + algorithm (str): checksum algorithm. Defaults to CRC32 + + Raises: + ChecksumError if the file checksum does not match. + """ + computed = compute_checksum(filepath, algorithm) + if computed != expected_checksum: + raise ChecksumError + + +def compute_checksum(filepath, algorithm="CRC32"): + """Compute the checksum of a file. + + Args: + filepath (str): the doaloaded file path + algorithm (str): checksum algorithm. Defaults to CRC32 + + Returns: + int: the checksum value + """ + if algorithm == "CRC32": + chs = _crc32_checksum(filepath) + else: + raise ValueError("Unsupported checksum algorithm!") + + return chs + + +def _crc32_checksum(filepath): + """Calculate the checksum of a file using CRC32.""" + with open(filepath, "rb") as f: + checksum = zlib.crc32(f.read()) + + return checksum diff --git a/tutorials/pose_estimation/Model/pose_estimation/storage/exceptions.py b/tutorials/pose_estimation/Model/pose_estimation/storage/exceptions.py new file mode 100644 index 00000000..d9d8655b --- /dev/null +++ b/tutorials/pose_estimation/Model/pose_estimation/storage/exceptions.py @@ -0,0 +1,6 @@ +class DownloadError(Exception): + """Raise when download file failed.""" + + +class ChecksumError(Exception): + """Raises when the downloaded file checksum is not correct.""" diff --git a/tutorials/pose_estimation/Model/pose_estimation/storage/gcs.py b/tutorials/pose_estimation/Model/pose_estimation/storage/gcs.py new file mode 100644 index 00000000..6052d75a --- /dev/null +++ b/tutorials/pose_estimation/Model/pose_estimation/storage/gcs.py @@ -0,0 +1,96 @@ +import logging +import os +from pathlib import Path + +from google.cloud.storage import Client + +logger = logging.getLogger(__name__) + + +class GCSClient: + def __init__(self, **kwargs): + """Initialize a client to google cloud storage (GCS).""" + self.client = Client(**kwargs) + + def download(self, bucket_name, object_key, localfile): + """Download a single object from GCS""" + bucket = self.client.get_bucket(bucket_name) + blob = bucket.blob(object_key) + + blob.download_to_filename(localfile) + + def upload(self, localfile, bucket_name, object_key): + """Upload a single object to GCS""" + bucket = self.client.get_bucket(bucket_name) + blob = bucket.blob(object_key) + + logger.info(f"filename : {localfile}") + blob.upload_from_filename(localfile) + + +def gcs_bucket_and_path(url): + """Split an GCS-prefixed URL into bucket and path.""" + gcs_prefix = "gs://" + if not url.startswith(gcs_prefix): + raise ValueError( + f"Specified destination prefix: {url} does not start " f"with {gcs_prefix}" + ) + url = url[len(gcs_prefix) :] + idx = url.index("/") + bucket = url[:idx] + path = url[(idx + 1) :] + + return bucket, path + + +def copy_folder_to_gcs(cloud_path, folder, pattern="*"): + """Copy all files within a folder to GCS + + Args: + pattern: Unix glob patterns. Use **/* for recursive glob. + """ + client = GCSClient() + bucket, prefix = gcs_bucket_and_path(cloud_path) + for path in Path(folder).glob(pattern): + if path.is_dir(): + continue + full_path = str(path) + relative_path = str(path.relative_to(folder)) + object_key = os.path.join(prefix, relative_path) + client.upload(full_path, bucket, object_key) + + +def download_file_from_gcs(cloud_path, local_path, filename, use_cache=True): + """Helper method to download a single file from GCS + + Args: + cloud_path: Full path to a GCS folder + local_path: Local path to a folder where the file should be stored + filename: The filename to be downloaded + + Returns: + str: Full path to the downloaded file + + Examples: + >>> cloud_path = "gs://bucket/folder" + >>> local_path = "/tmp/folder" + >>> filename = "file.txt" + >>> download_file_from_gcs(cloud_path, local_path, filename) + # download file gs://bucket/folder/file.txt to /tmp/folder/file.txt + """ + bucket, prefix = gcs_bucket_and_path(cloud_path) + object_key = os.path.join(prefix, filename) + local_filepath = os.path.join(local_path, filename) + + path = Path(local_path) + path.mkdir(parents=True, exist_ok=True) + client = GCSClient() + + if os.path.exists(local_filepath) and use_cache: + logger.info(f"Found existing file in {local_filepath}. Skipping download.") + else: + logger.info(f"Downloading from {cloud_path}/{filename} to {local_filepath}.") + client.download(bucket, object_key, local_filepath) + + # TODO(YC) Should run file checksum before return. + return local_filepath diff --git a/tutorials/pose_estimation/Model/pose_estimation/storage/kfp_output.py b/tutorials/pose_estimation/Model/pose_estimation/storage/kfp_output.py new file mode 100644 index 00000000..6b7df870 --- /dev/null +++ b/tutorials/pose_estimation/Model/pose_estimation/storage/kfp_output.py @@ -0,0 +1,68 @@ +import json +import logging +import os + +logger = logging.getLogger(__name__) + + +class KubeflowPipelineWriter(object): + """ + Serializes metrics dictionary genereated during model training/evaluation to + JSON and store in a file. + + Args: + filename (str): Name of the file to which the writer will save metrics + filepath (str): Path where the file will be stored + + Attributes: + filename (str): Name of the file to which the writer will save metrics + filepath (str): Path where the file will be stored + data_dict (dict): A dictionary to save metrics name and value pairs + data: Dictionary to be JSON serialized + """ + + def __init__(self, filename="mlpipeline-metrics.json", filepath="/"): + """ + Creates KubeflowPipelineWriter that will write out metrics to the output + file + """ + + self.filename = filename + self.filepath = filepath + self.data_dict = {} + self.data = {"metrics": []} + + def add_metric(self, name, val): + """ + Adds metric to the data dictionary of the writer + + Note: Using same name key will overwrite the previous value as the + current strategy is to save only the metrics generated in last epoch + + Args: + name (str): Name of the metric + val (float): Value of the metric + """ + + logger.debug("Metric {0} with value: {1} added".format(name, val)) + self.data_dict[name] = val + + def write_metric(self): + """ + Saves all the metrics added previously to a file in the format required + by kubeflow + """ + if not self.data_dict: + logger.warning("No metrics generated to be saved.") + return + + for key, val in self.data_dict.items(): + self.data["metrics"].append( + {"name": key, "numberValue": val, "format": "RAW"} + ) + if not os.path.exists(self.filepath): + os.makedirs(self.filepath) + with open(os.path.join(self.filepath, self.filename), "w") as f: + json.dump(self.data, f) + + logger.debug(f"Metrics file {self.filename} saved at path:" f" {self.filepath}") diff --git a/tutorials/pose_estimation/Model/pose_estimation/train.py b/tutorials/pose_estimation/Model/pose_estimation/train.py new file mode 100644 index 00000000..52e9826a --- /dev/null +++ b/tutorials/pose_estimation/Model/pose_estimation/train.py @@ -0,0 +1,144 @@ +import copy +import os + +import torch +import torchvision + +from pose_estimation.single_cube_dataset import SingleCubeDataset +from pose_estimation.evaluation_metrics.translation_average_mean_square_error import ( + translation_average_mean_square_error, +) +from pose_estimation.evaluation_metrics.orientation_average_quaternion_error import ( + orientation_average_quaternion_error, +) +from pose_estimation.evaluate import evaluate_one_epoch, evaluation_over_batch + + +def train_model(estimator): + """ + Do the training process for the estimator + + Args: + estimator: pose estimation estimator + """ + config = estimator.config + dataset_train = SingleCubeDataset( + config=config, + data_root=estimator.data_root, + split="train", + zip_file_name=config.train.dataset_zip_file_name_training, + sample_size=config.train.sample_size_train, + ) + dataset_val = SingleCubeDataset( + config=config, + data_root=estimator.data_root, + split="validation", + zip_file_name=config.val.dataset_zip_file_name_validation, + sample_size=config.val.sample_size_val, + ) + + train_loader = torch.utils.data.DataLoader( + dataset_train, + batch_size=config.train.batch_training_size, + num_workers=0, + drop_last=True, + ) + val_loader = torch.utils.data.DataLoader( + dataset_val, + batch_size=config.val.batch_validation_size, + num_workers=0, + drop_last=False, + ) + + train_loop( + estimator=estimator, + config=config, + train_dataloader=train_loader, + val_dataloader=val_loader, + ) + + +def train_loop(*, estimator, config, train_dataloader, val_dataloader): + """ + Do the training loop: for each epoch, it does the + training and the evaluation + + Args: + estimator: pose estimation estimator + label_id (int): corresponds to the label id in the captures_*.json folder minus 1. + config (CfgNode): estimator config + train_dataloader (torch.utils.data.DataLoader): training dataloader for the model training + val_dataloader (torch.utils.data.DataLoader): validation dataloader to feed the model evaluation + """ + config = config + model = estimator.model.to(estimator.device) + params = [p for p in model.parameters() if p.requires_grad] + optimizer = torch.optim.Adam( + params, + betas=(config.adam_optimizer.beta_1, config.adam_optimizer.beta_2), + lr=config.adam_optimizer.lr, + ) + + n_epochs = config.train.epochs + for epoch in range(1, n_epochs + 1): + estimator.logger.info(f"Training Epoch[{epoch}/{n_epochs}]") + _train_one_epoch( + estimator=estimator, + config=config, + optimizer=optimizer, + data_loader=train_dataloader, + epoch=epoch, + ) + + if epoch % config.checkpoint.save_frequency == 0: + estimator.checkpointer.save(estimator, epoch=epoch) + + if epoch % config.val.eval_freq == 0: + evaluate_one_epoch( + estimator=estimator, + config=config, + data_loader=val_dataloader, + epoch=epoch, + test=False, + ) + + +def _train_one_epoch( + *, estimator, config, optimizer, data_loader, epoch, +): + """ + Train the model on one epoch + + Args: + estimator: pose estimation estimator + label_id (int): corresponds to the label id in the captures_*.json folder minus 1. + config: model configuration + optimizer: pytorch optimizer + data_loader(DataLoader): pytorch dataloader + epoch (int): the number of the epoch we are at + """ + estimator.model.train() + optimizer.zero_grad() + + batch_size = config.train.batch_training_size + + criterion_translation = torch.nn.MSELoss() + criterion_orientation = torch.nn.MSELoss() + + metric_translation, metric_orientation = evaluation_over_batch( + estimator=estimator, + config=config, + data_loader=data_loader, + batch_size=batch_size, + epoch=epoch, + is_training=True, + optimizer=optimizer, + criterion_translation=criterion_translation, + criterion_orientation=criterion_orientation, + ) + + estimator.writer.log_training( + training_metric_translation=metric_translation, + training_metric_orientation=metric_orientation, + epoch=epoch, + ) diff --git a/tutorials/pose_estimation/Model/setup.py b/tutorials/pose_estimation/Model/setup.py new file mode 100644 index 00000000..9374067f --- /dev/null +++ b/tutorials/pose_estimation/Model/setup.py @@ -0,0 +1,42 @@ +import os +import io + +from setuptools import setup + +# Package meta-data. +NAME = "pose_estimation" +DESCRIPTION = "Perform pose estimation on a single cube environment" +EMAIL = "perception@unity3d.com" +AUTHOR = "Unity Perception" +REQUIRES_PYTHON = ">=3.8" +VERSION = "0.1.0" + +here = os.path.abspath(os.path.dirname(__file__)) + +# Load the package's __version__.py module as a dictionary. +about = {} +if not VERSION: + project_slug = NAME.lower().replace("-", "_").replace(" ", "_") + with open(os.path.join(here, project_slug, "__version__.py")) as f: + exec(f.read(), about) +else: + about["__version__"] = VERSION + +setup( + name = NAME, + description = DESCRIPTION, + author = AUTHOR, + author_email=EMAIL, + version = VERSION, + packages = ['pose_estimation'], + include_package_data=True, + entry_points = {'console_scripts': [f"{NAME}={NAME}.cli:main"]}, + classifiers=[ + # Trove classifiers + # Full list: https://pypi.python.org/pypi?%3Aaction=list_classifiers + "License :: OSI Approved :: MIT License", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.8", + ], +) diff --git a/tutorials/pose_estimation/Model/tensorboard.md b/tutorials/pose_estimation/Model/tensorboard.md new file mode 100644 index 00000000..a405da70 --- /dev/null +++ b/tutorials/pose_estimation/Model/tensorboard.md @@ -0,0 +1,27 @@ +# Visualizing Training Results with Tensorboard +To view the training or evaluation logs you can you use Tensorboard. The logs are saved in the same directory the model is saved. +You need to run the following command: + +* **Action**: +```bash +tensorboard --logdir=[LOG DIRECTORY] +``` + +You should see something similar to this: +

+ +

+ +The result of this command will show you the port on which Tensorboard is now available. In the example above, it can be found at port `6006`. + +* **Action**: Open your internet browser and navigate to: +``` +localhost:[PORT_NUMBER] +``` + +Once you navigate to that location in your browser, you should see something like this: +

+ +

+ +These charts show the changing loss during the training process. The training and validation losses are the mean squared errors for position and orientation on the training and validation data sets, respectively. During training, the loss is generally expected to go down, but as you can see here, it can be noisy. If you'd like to learn more about the model, you can explore its code [here](../Model). \ No newline at end of file diff --git a/tutorials/pose_estimation/Model/tests/config/test_config.yaml b/tutorials/pose_estimation/Model/tests/config/test_config.yaml new file mode 100644 index 00000000..28aa450a --- /dev/null +++ b/tutorials/pose_estimation/Model/tests/config/test_config.yaml @@ -0,0 +1,33 @@ +estimator: test +train: + dataset_zip_file_name_training: test_single_cube_dataset + batch_training_size: 1 + accumulation_steps: 1 + epochs: 1 + beta_loss: 1 + sample_size_train: 0 +val: + dataset_zip_file_name_validation: test_single_cube_dataset + batch_validation_size: 1 + val_start_epoch: 0 + sample_size_val: 0 +test: + dataset_zip_file_name_test: test_single_cube_dataset + batch_test_size: 1 + sample_size_test: 0 +dataset: + image_scale: 224 + download_data_gcp: False + gcs_bucket: None + pose_estimation_gcs_path: None + symmetric: [False] +adam_optimizer: + lr: 0.0001 + beta_1: 0.9 + beta_2: 0.999 +checkpoint: + load_dir_checkpoint: None + save_frequency: 1 +system: + log_dir_system: /tmp/pose_estimation/single_cube + data_root: /Users/Documents/ diff --git a/tutorials/pose_estimation/Model/tests/test_average_orientation_quaternion_error.py b/tutorials/pose_estimation/Model/tests/test_average_orientation_quaternion_error.py new file mode 100644 index 00000000..278c7ffb --- /dev/null +++ b/tutorials/pose_estimation/Model/tests/test_average_orientation_quaternion_error.py @@ -0,0 +1,56 @@ +from pose_estimation.evaluation_metrics.orientation_average_quaternion_error import ( + orientation_average_quaternion_error, +) +import torch +import numpy as np + + +class TestAverageQuaternionError: + def get_y_true_y_pred(self): + y_true = torch.tensor([[1.0, 2.0], [2.0, 3.0]]) + y_pred = torch.tensor([[2.0, 1.0], [1.0, 2.0]]) + return y_true, y_pred + + def test_metric(self): + + y_true, y_pred = self.get_y_true_y_pred() + # we need to normalize the vectors + norm_y_pred = torch.norm(y_pred, dim=1).unsqueeze(0) + norm_y_pred = torch.transpose(norm_y_pred, 1, 0) + y_pred = torch.div(y_pred, norm_y_pred) + + norm_y_true = torch.norm(y_true, dim=1).unsqueeze(0) + norm_y_true = torch.transpose(norm_y_true, 1, 0) + y_true = torch.div(y_true, norm_y_true) + + # compute real metric + true_res = 0 + shape = y_pred.shape + + for i in range(shape[0]): + error_sample = 0 + for j in range(shape[1]): + error_sample += (y_pred[i, j] * y_true[i, j]).item() + error_sample = 2 * (error_sample ** 2) - 1 + + if error_sample >= 0.999: + error_sample = 0 + if error_sample <= -0.999: + error_sample = np.pi / 2 + else: + error_sample = np.arccos(error_sample) + true_res += error_sample + + true_res = true_res / shape[0] + + # Update metric + res = orientation_average_quaternion_error(y_true, y_true) + assert 0 == res + + res = orientation_average_quaternion_error( + y_true, torch.tensor([[0.0, 0.0], [0.0, 0.0]]) + ) + assert np.round(np.pi / 2, 4) == np.round(res, 4) + + res = orientation_average_quaternion_error(y_pred, y_true) + assert np.round(true_res, 4) == np.round(res, 4) diff --git a/tutorials/pose_estimation/Model/tests/test_average_translation_mean_square_error.py b/tutorials/pose_estimation/Model/tests/test_average_translation_mean_square_error.py new file mode 100644 index 00000000..bc930ffd --- /dev/null +++ b/tutorials/pose_estimation/Model/tests/test_average_translation_mean_square_error.py @@ -0,0 +1,34 @@ +from pose_estimation.evaluation_metrics.translation_average_mean_square_error import ( + translation_average_mean_square_error, +) +import torch +import numpy as np + + +class TestAverageMeanSquaredError: + def get_y_true_y_pred(self): + y_true = torch.tensor([[2.0, 1.0, 1.0], [1, 2, 2]]) + y_pred = torch.tensor([[1.0, 2.0, 3.0], [2, 3, 4]]) + return y_true, y_pred + + def test_metric(self): + y_true, y_pred = self.get_y_true_y_pred() + + # compute real metric + true_res = 0 + shape = y_pred.shape + + for i in range(shape[0]): + error_sample = 0 + for j in range(shape[1]): + error_sample += torch.mul( + y_pred[i, j] - y_true[i, j], y_pred[i, j] - y_true[i, j] + ).item() + true_res += error_sample / shape[1] + true_res = true_res / shape[0] + + res = translation_average_mean_square_error(y_true, y_true) + assert 0 == res + + res = translation_average_mean_square_error(y_pred, y_true) + assert np.round(true_res, 4) == np.round(res, 4) diff --git a/tutorials/pose_estimation/Model/tests/test_evaluate.py b/tutorials/pose_estimation/Model/tests/test_evaluate.py new file mode 100644 index 00000000..b643fe8c --- /dev/null +++ b/tutorials/pose_estimation/Model/tests/test_evaluate.py @@ -0,0 +1,61 @@ +from pose_estimation.pose_estimation_estimator import PoseEstimationEstimator +from pose_estimation.single_cube_dataset import SingleCubeDataset +from pose_estimation.evaluate import evaluate_models, evaluate_one_epoch +from unittest.mock import MagicMock, patch +import os +import tempfile + +import pytest +import torch +from yacs.config import CfgNode as CN + +from pose_estimation.storage.checkpoint import EstimatorCheckpoint + +# XXX This should not be a global variable. A tempdir should be a fixture and +# automatically cleanup after EVERY unit test finished execution. +tmp_dir = tempfile.TemporaryDirectory() +tmp_name = tmp_dir.name + +data_root = os.path.join(os.getcwd(), "tests") +zip_file_name = "test_single_cube_dataset" +root = os.path.join(data_root, zip_file_name) + + +@pytest.fixture +def config(): + """prepare config.""" + with open("tests/config/test_config.yaml") as f: + cfg = CN.load_cfg(f) + + return cfg + + +@pytest.fixture +def dataset(config): + """prepare dataset.""" + dataset_test = SingleCubeDataset( + config=config, + data_root=data_root, + zip_file_name=zip_file_name, + sample_size=0, + download=False, + ) + return dataset_test + + +class TestEvaluate: + @patch("pose_estimation.evaluate.evaluate_one_epoch") + def test_evaluate_model(self, mock_evaluate_one_epoch, config, dataset): + """test train on all epochs.""" + log_dir = os.path.join(tmp_name, "eval") + if not os.path.exists(log_dir): + os.mkdir(log_dir) + + config.system.data_root = data_root + config.system.log_dir_system = log_dir + + pose_estimation_estimator = PoseEstimationEstimator(config=config) + + evaluate_models(estimator=pose_estimation_estimator) + + mock_evaluate_one_epoch.assert_called_once() diff --git a/tutorials/pose_estimation/Model/tests/test_linear_normalized_activation.py b/tutorials/pose_estimation/Model/tests/test_linear_normalized_activation.py new file mode 100644 index 00000000..7cf2c430 --- /dev/null +++ b/tutorials/pose_estimation/Model/tests/test_linear_normalized_activation.py @@ -0,0 +1,25 @@ +from pose_estimation.model import LinearNormalized +import torch +import numpy as np + + +class TestLinearNormalizedActivation: + def test_activation_function(self): + activation_function = LinearNormalized() + + # now we compute the real activation function + x = torch.tensor([[1.0, 2.0], [2.0, 3.0]]) + true_res = x + for index in range(x.shape[0]): + element = true_res[index] + norm = torch.norm(element, p=2).item() + element = element / norm + true_res[index] = element + + res = activation_function._linear_normalized(x) + + assert torch.equal(np.round(res, 4), np.round(true_res, 4)) + + true_res = torch.tensor([[0.0, 0.0]]) + res = activation_function._linear_normalized(true_res) + assert torch.equal(np.round(res, 4), np.round(true_res, 4)) diff --git a/tutorials/pose_estimation/Model/tests/test_single_cube_dataset.py b/tutorials/pose_estimation/Model/tests/test_single_cube_dataset.py new file mode 100644 index 00000000..d4137890 --- /dev/null +++ b/tutorials/pose_estimation/Model/tests/test_single_cube_dataset.py @@ -0,0 +1,102 @@ +from pose_estimation.single_cube_dataset import ( + SingleCubeDataset, + RawDataIterator, +) +import os + +import pytest +from yacs.config import CfgNode as CN + +data_root = os.path.join(os.getcwd(), "tests") +zip_file_name = "test_single_cube_dataset" +root = os.path.join(data_root, zip_file_name) + + +@pytest.fixture +def config(): + """prepare config.""" + with open("tests/config/test_config.yaml") as f: + cfg = CN.load_cfg(f) + + return cfg + + +class TestSingleCubeDataset: + def test_RawDataIterator(self, config): + raw_data_iterator = RawDataIterator(path=root) + data_dicts = [] + image_paths = [] + + for data_dict, image_path in raw_data_iterator: + data_dicts.append(data_dict) + image_paths.append(image_path) + + assert len(data_dicts) == 10 + assert len(image_paths) == 10 + assert (len(set(image_paths))) == 10 + + for i in range(len(data_dicts)): + for j in range(len(config.dataset.symmetric)): + data_dict = data_dicts[i][j] + + print(data_dict) + assert "translation" in data_dict.keys() + assert "rotation" in data_dict.keys() + assert len(data_dict['translation']) == 3 + assert len(data_dict['rotation']) == 4 + + def test_SingleCubeIterator(self, config): + dataset_iterator = SingleCubeDataset( + config=config, + data_root=data_root, + zip_file_name=zip_file_name, + sample_size=0, + download=False, + ) + images, targets_trans, targets_orient = [], [], [] + + assert len(dataset_iterator) == 10 + + for image, target_trans, target_orient in dataset_iterator: + images.append(image) + targets_trans.append(target_trans) + targets_orient.append(target_orient) + print(target_orient) + assert len(images) == 10 + assert len(targets_trans) == 10 + assert len(targets_orient) == 10 + + print(targets_trans[0]) + + for i in range(len(images)): + for j in range(len(config.dataset.symmetric)): + target_trans = targets_trans[i][j] + target_orient = targets_orient[i][j] + + assert len(target_trans) == 3 + assert len(target_orient) == 4 + + dataset_sample_iterator = SingleCubeDataset( + config=config, + data_root=data_root, + zip_file_name=zip_file_name, + sample_size=2, + ) + sample_images, sample_targets_trans, sample_targets_orient = [], [], [] + + for image, target_trans, target_orient in dataset_sample_iterator: + sample_images.append(image) + sample_targets_trans.append(target_trans) + sample_targets_orient.append(target_orient) + + assert len(sample_images) == 2 + assert len(sample_targets_trans) == 2 + assert len(sample_targets_orient) == 2 + + for i in range(len(sample_images)): + for j in range(len(config.dataset.symmetric)): + target_trans = sample_targets_trans[i][j] + target_orient = sample_targets_orient[i][j] + + assert len(target_trans) == 3 + assert len(target_orient) == 4 diff --git a/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/Datasetbbde242f-b4c3-4111-8b74-219b67a06d92/captures_000.json b/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/Datasetbbde242f-b4c3-4111-8b74-219b67a06d92/captures_000.json new file mode 100644 index 00000000..755f4612 --- /dev/null +++ b/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/Datasetbbde242f-b4c3-4111-8b74-219b67a06d92/captures_000.json @@ -0,0 +1,965 @@ +{ + "version": "0.0.1", + "captures": [ + { + "id": "27205ac3-861a-4cf6-84a5-9d591750b0d0", + "sequence_id": "f78f1598-34b9-4ec4-9508-9b7bd88046fe", + "step": 0, + "timestamp": 0.0, + "sensor": { + "sensor_id": "e3947bfc-ffbc-421e-a2ee-a610885a9356", + "ego_id": "5e02b406-6355-4810-b1d8-d91bd783a3a9", + "modality": "camera", + "translation": [ + 0.0, + 0.0, + 0.0 + ], + "rotation": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "camera_intrinsic": [ + [ + 0.715250432, + 0.0, + 0.0 + ], + [ + 0.0, + 1.0, + 0.0 + ], + [ + 0.0, + 0.0, + -0.0020006 + ] + ] + }, + "ego": { + "ego_id": "5e02b406-6355-4810-b1d8-d91bd783a3a9", + "translation": [ + 0.052, + 1.74, + -1.91 + ], + "rotation": [ + 0.130526155, + 0.0, + 0.0, + 0.9914449 + ], + "velocity": null, + "acceleration": null + }, + "filename": "RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_2.png", + "format": "PNG", + "annotations": [ + { + "id": "ecb2178b-c85d-48d3-9fc2-4ca182aa797c", + "annotation_definition": "0bfbe00d-00fa-4555-88d1-471b58449f5c", + "values": [ + { + "label_id": 1, + "label_name": "cube_position", + "instance_id": 1, + "translation": [ + -0.461782932, + -0.3718773, + 2.18606114 + ], + "size": [ + 0.099999994, + 0.099999994, + 0.099999994 + ], + "rotation": [ + 0.08947899, + 0.721820235, + -0.09502942, + -0.6796606 + ], + "velocity": [ + 0.0, + 0.0, + 0.0 + ], + "acceleration": [ + 0.0, + 0.0, + 0.0 + ] + } + ] + } + ] + }, + { + "id": "4bbdfdee-0d57-49cc-99b1-67bab1b663e1", + "sequence_id": "3d1429cf-f26e-452c-b4fe-2bd4b68219f2", + "step": 0, + "timestamp": 0.0, + "sensor": { + "sensor_id": "e3947bfc-ffbc-421e-a2ee-a610885a9356", + "ego_id": "5e02b406-6355-4810-b1d8-d91bd783a3a9", + "modality": "camera", + "translation": [ + 0.0, + 0.0, + 0.0 + ], + "rotation": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "camera_intrinsic": [ + [ + 0.715250432, + 0.0, + 0.0 + ], + [ + 0.0, + 1.0, + 0.0 + ], + [ + 0.0, + 0.0, + -0.0020006 + ] + ] + }, + "ego": { + "ego_id": "5e02b406-6355-4810-b1d8-d91bd783a3a9", + "translation": [ + 0.052, + 1.74, + -1.91 + ], + "rotation": [ + 0.130526155, + 0.0, + 0.0, + 0.9914449 + ], + "velocity": null, + "acceleration": null + }, + "filename": "RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_3.png", + "format": "PNG", + "annotations": [ + { + "id": "14328f8c-514f-45ad-ad24-9739bbefa05f", + "annotation_definition": "0bfbe00d-00fa-4555-88d1-471b58449f5c", + "values": [ + { + "label_id": 1, + "label_name": "cube_position", + "instance_id": 1, + "translation": [ + -0.0509061776, + -0.303240657, + 2.44221687 + ], + "size": [ + 0.099999994, + 0.099999994, + 0.099999994 + ], + "rotation": [ + 0.130522966, + 0.00693237735, + -0.0009126644, + -0.9914207 + ], + "velocity": [ + 0.0, + 0.0, + 0.0 + ], + "acceleration": [ + 0.0, + 0.0, + 0.0 + ] + } + ] + } + ] + }, + { + "id": "b59596db-83fc-43c0-9b4e-367f65000a4b", + "sequence_id": "b2418f4f-c05c-49c1-ab83-d39431a0e4c1", + "step": 0, + "timestamp": 0.0, + "sensor": { + "sensor_id": "e3947bfc-ffbc-421e-a2ee-a610885a9356", + "ego_id": "5e02b406-6355-4810-b1d8-d91bd783a3a9", + "modality": "camera", + "translation": [ + 0.0, + 0.0, + 0.0 + ], + "rotation": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "camera_intrinsic": [ + [ + 0.715250432, + 0.0, + 0.0 + ], + [ + 0.0, + 1.0, + 0.0 + ], + [ + 0.0, + 0.0, + -0.0020006 + ] + ] + }, + "ego": { + "ego_id": "5e02b406-6355-4810-b1d8-d91bd783a3a9", + "translation": [ + 0.052, + 1.74, + -1.91 + ], + "rotation": [ + 0.130526155, + 0.0, + 0.0, + 0.9914449 + ], + "velocity": null, + "acceleration": null + }, + "filename": "RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_4.png", + "format": "PNG", + "annotations": [ + { + "id": "40bd87d9-c880-48fd-bf49-eef0d43cdbf4", + "annotation_definition": "0bfbe00d-00fa-4555-88d1-471b58449f5c", + "values": [ + { + "label_id": 1, + "label_name": "cube_position", + "instance_id": 1, + "translation": [ + 0.3268817, + -0.309984624, + 2.41704822 + ], + "size": [ + 0.099999994, + 0.099999994, + 0.099999994 + ], + "rotation": [ + 0.08140865, + 0.77497977, + -0.10202799, + -0.6183603 + ], + "velocity": [ + 0.0, + 0.0, + 0.0 + ], + "acceleration": [ + 0.0, + 0.0, + 0.0 + ] + } + ] + } + ] + }, + { + "id": "abe8b831-956f-406a-8c4f-7975b0f58328", + "sequence_id": "447bb65c-2b2d-4345-8a3f-9867923a58a2", + "step": 0, + "timestamp": 0.0, + "sensor": { + "sensor_id": "e3947bfc-ffbc-421e-a2ee-a610885a9356", + "ego_id": "5e02b406-6355-4810-b1d8-d91bd783a3a9", + "modality": "camera", + "translation": [ + 0.0, + 0.0, + 0.0 + ], + "rotation": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "camera_intrinsic": [ + [ + 0.715250432, + 0.0, + 0.0 + ], + [ + 0.0, + 1.0, + 0.0 + ], + [ + 0.0, + 0.0, + -0.0020006 + ] + ] + }, + "ego": { + "ego_id": "5e02b406-6355-4810-b1d8-d91bd783a3a9", + "translation": [ + 0.052, + 1.74, + -1.91 + ], + "rotation": [ + 0.130526155, + 0.0, + 0.0, + 0.9914449 + ], + "velocity": null, + "acceleration": null + }, + "filename": "RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_5.png", + "format": "PNG", + "annotations": [ + { + "id": "7ed03310-cdba-4e40-9cc0-df13113f33ac", + "annotation_definition": "0bfbe00d-00fa-4555-88d1-471b58449f5c", + "values": [ + { + "label_id": 1, + "label_name": "cube_position", + "instance_id": 1, + "translation": [ + -0.4096111, + -0.4972723, + 1.71808064 + ], + "size": [ + 0.099999994, + 0.099999994, + 0.099999994 + ], + "rotation": [ + -0.0290097352, + 0.9666481, + -0.1272616, + 0.220350891 + ], + "velocity": [ + 0.0, + 0.0, + 0.0 + ], + "acceleration": [ + 0.0, + 0.0, + 0.0 + ] + } + ] + } + ] + }, + { + "id": "7f5bf2b8-7e34-4dbc-a3d6-7d2bc5b1de4d", + "sequence_id": "e78ecdc9-3359-476d-aa16-3ccc02907804", + "step": 0, + "timestamp": 0.0, + "sensor": { + "sensor_id": "e3947bfc-ffbc-421e-a2ee-a610885a9356", + "ego_id": "5e02b406-6355-4810-b1d8-d91bd783a3a9", + "modality": "camera", + "translation": [ + 0.0, + 0.0, + 0.0 + ], + "rotation": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "camera_intrinsic": [ + [ + 0.715250432, + 0.0, + 0.0 + ], + [ + 0.0, + 1.0, + 0.0 + ], + [ + 0.0, + 0.0, + -0.0020006 + ] + ] + }, + "ego": { + "ego_id": "5e02b406-6355-4810-b1d8-d91bd783a3a9", + "translation": [ + 0.052, + 1.74, + -1.91 + ], + "rotation": [ + 0.130526155, + 0.0, + 0.0, + 0.9914449 + ], + "velocity": null, + "acceleration": null + }, + "filename": "RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_6.png", + "format": "PNG", + "annotations": [ + { + "id": "06b655c9-4997-4a56-9738-12ba3babba25", + "annotation_definition": "0bfbe00d-00fa-4555-88d1-471b58449f5c", + "values": [ + { + "label_id": 1, + "label_name": "cube_position", + "instance_id": 1, + "translation": [ + 0.332725048, + -0.341311634, + 2.30013371 + ], + "size": [ + 0.099999994, + 0.099999994, + 0.099999994 + ], + "rotation": [ + 0.130499154, + 0.02016377, + -0.00265461, + -0.9912399 + ], + "velocity": [ + 0.0, + 0.0, + 0.0 + ], + "acceleration": [ + 0.0, + 0.0, + 0.0 + ] + } + ] + } + ] + }, + { + "id": "e711c762-b881-443e-88c7-cedf8be25ab1", + "sequence_id": "e5be67e7-c803-4438-930c-25f830c44d30", + "step": 0, + "timestamp": 0.0, + "sensor": { + "sensor_id": "e3947bfc-ffbc-421e-a2ee-a610885a9356", + "ego_id": "5e02b406-6355-4810-b1d8-d91bd783a3a9", + "modality": "camera", + "translation": [ + 0.0, + 0.0, + 0.0 + ], + "rotation": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "camera_intrinsic": [ + [ + 0.715250432, + 0.0, + 0.0 + ], + [ + 0.0, + 1.0, + 0.0 + ], + [ + 0.0, + 0.0, + -0.0020006 + ] + ] + }, + "ego": { + "ego_id": "5e02b406-6355-4810-b1d8-d91bd783a3a9", + "translation": [ + 0.052, + 1.74, + -1.91 + ], + "rotation": [ + 0.130526155, + 0.0, + 0.0, + 0.9914449 + ], + "velocity": null, + "acceleration": null + }, + "filename": "RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_7.png", + "format": "PNG", + "annotations": [ + { + "id": "2cc6205f-cec9-4506-9d6c-db90c8ba2868", + "annotation_definition": "0bfbe00d-00fa-4555-88d1-471b58449f5c", + "values": [ + { + "label_id": 1, + "label_name": "cube_position", + "instance_id": 1, + "translation": [ + 0.323593378, + -0.5015345, + 1.70217371 + ], + "size": [ + 0.099999994, + 0.099999994, + 0.099999994 + ], + "rotation": [ + -0.06701763, + 0.850783, + -0.112007663, + 0.5090496 + ], + "velocity": [ + 0.0, + 0.0, + 0.0 + ], + "acceleration": [ + 0.0, + 0.0, + 0.0 + ] + } + ] + } + ] + }, + { + "id": "c1eeaf98-1a3e-4570-8b5b-5dffcb9ee8b8", + "sequence_id": "55ab2d0c-88f1-4742-8c55-ca17cb2d577b", + "step": 0, + "timestamp": 0.0, + "sensor": { + "sensor_id": "e3947bfc-ffbc-421e-a2ee-a610885a9356", + "ego_id": "5e02b406-6355-4810-b1d8-d91bd783a3a9", + "modality": "camera", + "translation": [ + 0.0, + 0.0, + 0.0 + ], + "rotation": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "camera_intrinsic": [ + [ + 0.715250432, + 0.0, + 0.0 + ], + [ + 0.0, + 1.0, + 0.0 + ], + [ + 0.0, + 0.0, + -0.0020006 + ] + ] + }, + "ego": { + "ego_id": "5e02b406-6355-4810-b1d8-d91bd783a3a9", + "translation": [ + 0.052, + 1.74, + -1.91 + ], + "rotation": [ + 0.130526155, + 0.0, + 0.0, + 0.9914449 + ], + "velocity": null, + "acceleration": null + }, + "filename": "RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_8.png", + "format": "PNG", + "annotations": [ + { + "id": "478e04be-8d88-4c1a-b488-053bd40a2b36", + "annotation_definition": "0bfbe00d-00fa-4555-88d1-471b58449f5c", + "values": [ + { + "label_id": 1, + "label_name": "cube_position", + "instance_id": 1, + "translation": [ + -0.0987353, + -0.4894147, + 1.74740589 + ], + "size": [ + 0.099999994, + 0.099999994, + 0.099999994 + ], + "rotation": [ + -0.129187867, + 0.141610265, + -0.0186433364, + 0.9812796 + ], + "velocity": [ + 0.0, + 0.0, + 0.0 + ], + "acceleration": [ + 0.0, + 0.0, + 0.0 + ] + } + ] + } + ] + }, + { + "id": "2e81e6b1-c8e4-4690-8ada-152c355bc2f6", + "sequence_id": "49892329-5ac6-4400-abd5-d3f6978d8641", + "step": 0, + "timestamp": 0.0, + "sensor": { + "sensor_id": "e3947bfc-ffbc-421e-a2ee-a610885a9356", + "ego_id": "5e02b406-6355-4810-b1d8-d91bd783a3a9", + "modality": "camera", + "translation": [ + 0.0, + 0.0, + 0.0 + ], + "rotation": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "camera_intrinsic": [ + [ + 0.715250432, + 0.0, + 0.0 + ], + [ + 0.0, + 1.0, + 0.0 + ], + [ + 0.0, + 0.0, + -0.0020006 + ] + ] + }, + "ego": { + "ego_id": "5e02b406-6355-4810-b1d8-d91bd783a3a9", + "translation": [ + 0.052, + 1.74, + -1.91 + ], + "rotation": [ + 0.130526155, + 0.0, + 0.0, + 0.9914449 + ], + "velocity": null, + "acceleration": null + }, + "filename": "RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_9.png", + "format": "PNG", + "annotations": [ + { + "id": "ba05de80-d239-465d-a68a-2fd49283cc17", + "annotation_definition": "0bfbe00d-00fa-4555-88d1-471b58449f5c", + "values": [ + { + "label_id": 1, + "label_name": "cube_position", + "instance_id": 1, + "translation": [ + -0.009320512, + -0.2979082, + 2.46211767 + ], + "size": [ + 0.099999994, + 0.099999994, + 0.099999994 + ], + "rotation": [ + 0.13006629, + 0.08315169, + -0.010947126, + -0.9879519 + ], + "velocity": [ + 0.0, + 0.0, + 0.0 + ], + "acceleration": [ + 0.0, + 0.0, + 0.0 + ] + } + ] + } + ] + }, + { + "id": "f536493a-98b9-4ea2-a22b-66f4a64c751e", + "sequence_id": "e8a9ad69-f6f6-498b-956f-27bf957b4805", + "step": 0, + "timestamp": 0.0, + "sensor": { + "sensor_id": "e3947bfc-ffbc-421e-a2ee-a610885a9356", + "ego_id": "5e02b406-6355-4810-b1d8-d91bd783a3a9", + "modality": "camera", + "translation": [ + 0.0, + 0.0, + 0.0 + ], + "rotation": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "camera_intrinsic": [ + [ + 0.715250432, + 0.0, + 0.0 + ], + [ + 0.0, + 1.0, + 0.0 + ], + [ + 0.0, + 0.0, + -0.0020006 + ] + ] + }, + "ego": { + "ego_id": "5e02b406-6355-4810-b1d8-d91bd783a3a9", + "translation": [ + 0.052, + 1.74, + -1.91 + ], + "rotation": [ + 0.130526155, + 0.0, + 0.0, + 0.9914449 + ], + "velocity": null, + "acceleration": null + }, + "filename": "RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_10.png", + "format": "PNG", + "annotations": [ + { + "id": "99ca3683-3923-4512-a152-df7e5dda003c", + "annotation_definition": "0bfbe00d-00fa-4555-88d1-471b58449f5c", + "values": [ + { + "label_id": 1, + "label_name": "cube_position", + "instance_id": 1, + "translation": [ + -0.131854564, + -0.498328269, + 1.71413958 + ], + "size": [ + 0.099999994, + 0.099999994, + 0.099999994 + ], + "rotation": [ + -0.110588416, + 0.5266485, + -0.06933458, + 0.840002656 + ], + "velocity": [ + 0.0, + 0.0, + 0.0 + ], + "acceleration": [ + 0.0, + 0.0, + 0.0 + ] + } + ] + } + ] + }, + { + "id": "1a2d3831-fe71-41eb-9d6d-68a372080296", + "sequence_id": "6b0f408e-896d-4e35-9a7d-e4dd9739317c", + "step": 0, + "timestamp": 0.0, + "sensor": { + "sensor_id": "e3947bfc-ffbc-421e-a2ee-a610885a9356", + "ego_id": "5e02b406-6355-4810-b1d8-d91bd783a3a9", + "modality": "camera", + "translation": [ + 0.0, + 0.0, + 0.0 + ], + "rotation": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "camera_intrinsic": [ + [ + 0.715250432, + 0.0, + 0.0 + ], + [ + 0.0, + 1.0, + 0.0 + ], + [ + 0.0, + 0.0, + -0.0020006 + ] + ] + }, + "ego": { + "ego_id": "5e02b406-6355-4810-b1d8-d91bd783a3a9", + "translation": [ + 0.052, + 1.74, + -1.91 + ], + "rotation": [ + 0.130526155, + 0.0, + 0.0, + 0.9914449 + ], + "velocity": null, + "acceleration": null + }, + "filename": "RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_11.png", + "format": "PNG", + "annotations": [ + { + "id": "19494e60-8565-4652-af93-c594bc067fc3", + "annotation_definition": "0bfbe00d-00fa-4555-88d1-471b58449f5c", + "values": [ + { + "label_id": 1, + "label_name": "cube_position", + "instance_id": 1, + "translation": [ + 0.351460755, + -0.354412019, + 2.25124216 + ], + "size": [ + 0.099999994, + 0.099999994, + 0.099999994 + ], + "rotation": [ + -0.1300397, + 0.0855161, + -0.0112584038, + 0.987749934 + ], + "velocity": [ + 0.0, + 0.0, + 0.0 + ], + "acceleration": [ + 0.0, + 0.0, + 0.0 + ] + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/Logs/heartbeat.txt b/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/Logs/heartbeat.txt new file mode 100644 index 00000000..d3b1641a --- /dev/null +++ b/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/Logs/heartbeat.txt @@ -0,0 +1,2 @@ +0.050 +0.066 diff --git a/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_10.png b/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_10.png new file mode 100644 index 00000000..fc526524 Binary files /dev/null and b/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_10.png differ diff --git a/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_11.png b/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_11.png new file mode 100644 index 00000000..a4d946a1 Binary files /dev/null and b/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_11.png differ diff --git a/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_2.png b/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_2.png new file mode 100644 index 00000000..ea3f4f00 Binary files /dev/null and b/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_2.png differ diff --git a/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_3.png b/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_3.png new file mode 100644 index 00000000..eb3f59f4 Binary files /dev/null and b/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_3.png differ diff --git a/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_4.png b/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_4.png new file mode 100644 index 00000000..04513b45 Binary files /dev/null and b/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_4.png differ diff --git a/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_5.png b/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_5.png new file mode 100644 index 00000000..0fa607d5 Binary files /dev/null and b/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_5.png differ diff --git a/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_6.png b/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_6.png new file mode 100644 index 00000000..2651d48c Binary files /dev/null and b/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_6.png differ diff --git a/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_7.png b/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_7.png new file mode 100644 index 00000000..a58943db Binary files /dev/null and b/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_7.png differ diff --git a/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_8.png b/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_8.png new file mode 100644 index 00000000..b210d7be Binary files /dev/null and b/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_8.png differ diff --git a/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_9.png b/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_9.png new file mode 100644 index 00000000..6bde6149 Binary files /dev/null and b/tutorials/pose_estimation/Model/tests/test_single_cube_dataset/RGB34ff62fd-df0e-490e-b001-79fbe1ac1a7d/rgb_9.png differ diff --git a/tutorials/pose_estimation/Model/tests/test_train.py b/tutorials/pose_estimation/Model/tests/test_train.py new file mode 100644 index 00000000..86e65c83 --- /dev/null +++ b/tutorials/pose_estimation/Model/tests/test_train.py @@ -0,0 +1,83 @@ +from pose_estimation.pose_estimation_estimator import PoseEstimationEstimator +from pose_estimation.single_cube_dataset import SingleCubeDataset +from pose_estimation.train import ( + train_loop, + _train_one_epoch +) +from unittest.mock import MagicMock, patch +import os +import tempfile + +import pytest +import torch +from yacs.config import CfgNode as CN + +from pose_estimation.storage.checkpoint import EstimatorCheckpoint + +# XXX This should not be a global variable. A tempdir should be a fixture and +# automatically cleanup after EVERY unit test finished execution. +tmp_dir = tempfile.TemporaryDirectory() +tmp_name = tmp_dir.name + +data_root = os.path.join(os.getcwd(), "tests") +zip_file_name = "test_single_cube_dataset" +root = os.path.join(data_root, zip_file_name) + + +@pytest.fixture +def config(): + """prepare config.""" + with open("tests/config/test_config.yaml") as f: + cfg = CN.load_cfg(f) + + return cfg + + +@pytest.fixture +def dataset(config): + """prepare dataset.""" + dataset_test = SingleCubeDataset( + config=config, + data_root=data_root, + zip_file_name=zip_file_name, + sample_size=0, + download=False, + ) + return dataset_test + + +class TestTrain: + @patch("pose_estimation.train._train_one_epoch") + def test_train_loop(self, mock_train_one_epoch, config, dataset): + """test train on all epochs.""" + log_dir = os.path.join(tmp_name, "train") + if not os.path.exists(log_dir): + os.mkdir(log_dir) + + config.system.data_root = data_root + config.system.log_dir_system = log_dir + + train_loader = torch.utils.data.DataLoader( + dataset, + batch_size=config.train.batch_training_size, + num_workers=0, + drop_last=True, + ) + val_loader = torch.utils.data.DataLoader( + dataset, + batch_size=config.val.batch_validation_size, + num_workers=0, + drop_last=False, + ) + + pose_estimation_estimator = PoseEstimationEstimator(config=config,) + + train_loop( + estimator=pose_estimation_estimator, + label_id=0, + config=config, + train_dataloader=train_loader, + val_dataloader=val_loader, + ) + + mock_train_one_epoch.assert_called_once() diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/.gitignore b/tutorials/pose_estimation/PoseEstimationDemoProject/.gitignore new file mode 100644 index 00000000..7a916ab0 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/.gitignore @@ -0,0 +1,74 @@ +# This .gitignore file should be placed at the root of your Unity project directory +# +# Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore +# +/[Ll]ibrary/ +/[Tt]emp/ +/[Oo]bj/ +/[Bb]uild/ +/[Bb]uilds/ +/[Ll]ogs/ +/[Uu]ser[Ss]ettings/ + +# MemoryCaptures can get excessive in size. +# They also could contain extremely sensitive data +/[Mm]emoryCaptures/ + +# Asset meta data should only be ignored when the corresponding asset is also ignored +!/[Aa]ssets/**/*.meta + +# Uncomment this line if you wish to ignore the asset store tools plugin +# /[Aa]ssets/AssetStoreTools* + +# Autogenerated Jetbrains Rider plugin +/[Aa]ssets/Plugins/Editor/JetBrains* + +# Visual Studio cache directory +.vs/ +.vscode/ + +# Gradle cache directory +.gradle/ + +# Autogenerated VS/MD/Consulo solution and project files +ExportedObj/ +.consulo/ +*.csproj +*.unityproj +*.sln +*.suo +*.tmp +*.user +*.userprefs +*.pidb +*.booproj +*.svd +*.pdb +*.mdb +*.opendb +*.VC.db + +# Unity3D generated meta files +*.pidb.meta +*.pdb.meta +*.mdb.meta + +# Unity3D generated file on crash reports +sysinfo.txt + +# Builds +*.apk +*.aab +*.unitypackage + +# Crashlytics generated file +crashlytics-build.properties + +# Packed Addressables +/[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin* + +# Temporary auto-generated Android Assets +/[Aa]ssets/[Ss]treamingAssets/aa.meta +/[Aa]ssets/[Ss]treamingAssets/aa/* + +*.DS_Store \ No newline at end of file diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/IdLabelConfig.asset b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/IdLabelConfig.asset new file mode 100644 index 00000000..3be5d476 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/IdLabelConfig.asset @@ -0,0 +1,19 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2f09f279848e42cea259348b13bce4c5, type: 3} + m_Name: IdLabelConfig + m_EditorClassIdentifier: + m_LabelEntries: + - label: cube_position + id: 1 + autoAssignIds: 1 + startingLabelId: 1 diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/IdLabelConfig.asset.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/IdLabelConfig.asset.meta new file mode 100644 index 00000000..0fca9834 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/IdLabelConfig.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 24c39ac74f73840408cb11109db36655 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Readme.asset b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Readme.asset new file mode 100644 index 00000000..76e2d5d3 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Readme.asset @@ -0,0 +1,50 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fcf7219bab7fe46a1ad266029b2fee19, type: 3} + m_Name: Readme + m_EditorClassIdentifier: + icon: {fileID: 2800000, guid: 7801804018a7dcf42abb827444e18660, type: 3} + title: Universal Render Pipeline Template + sections: + - heading: Universal Render Pipeline + text: 'The Universal Project Template configures Project settings for Projects where performance, wide platform support, and ease of customizing graphics are the primary considerations.' + linkText: + url: + - heading: + text: 'This Template uses the Universal Render Pipeline (URP) and Shader Graph.' + linkText: + url: + - heading: + text: 'URP is prebuilt Scriptable Render Pipeline that is quick and easy to customize, and lets you create optimized graphics across a wide range of platforms. URP also includes an optimized 2D renderer complete with 2D lights and pixel perfect rendering, and an integrated post-processing solution.' + linkText: + url: + - heading: + text: 'Shader Graph is a tool that allows you to create shaders using a visual node editor instead of writing code.' + linkText: + url: + - heading: + text: 'This template contains a sample Scene that contains examples of how to configure lighting settings, Materials, Shaders, and post-processing effects in URP, several preconfigured Universal Render Pipeline Assets that let you quickly swap between graphics quality levels, and Presets that have been optimized for use with URP.' + linkText: + url: + - heading: + text: 'This template contains a sample Scene that contains examples of how to configure lighting settings, Materials, Shaders, and post-processing effects in URP, several preconfigured Universal Render Pipeline Assets that let you quickly swap between graphics quality levels, and Presets that have been optimized for use with URP.' + linkText: + url: + - heading: + text: 'To read more about URP and its built-in features, see the ' + linkText: URP documentation. + url: https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@latest/index.html + - heading: + text: 'For more information about Shader Graph, see the ' + linkText: Shader Graph documentation + url: https://docs.unity3d.com/Packages/com.unity.shadergraph@latest + loadedLayout: 1 diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Readme.asset.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Readme.asset.meta new file mode 100644 index 00000000..af1f2eeb --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Readme.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 83c2ed844a8c74b779a4c823d16594b1 +timeCreated: 1484217493 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Resources.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Resources.meta new file mode 100644 index 00000000..3bf67855 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 393c6e7352d354567b35e96aea274d04 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Resources/ROSConnectionPrefab.prefab b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Resources/ROSConnectionPrefab.prefab new file mode 100644 index 00000000..0ea275f2 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Resources/ROSConnectionPrefab.prefab @@ -0,0 +1,52 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &577557060043227314 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7479740165937197149} + - component: {fileID: 2689783963552558219} + m_Layer: 0 + m_Name: ROSConnectionPrefab + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7479740165937197149 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 577557060043227314} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2689783963552558219 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 577557060043227314} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7acef0b79454c9b4dae3f8139bc4ba77, type: 3} + m_Name: + m_EditorClassIdentifier: + rosIPAddress: 127.0.0.1 + rosPort: 10000 + overrideUnityIP: 127.0.0.1 + unityPort: 5005 + awaitDataMaxRetries: 10 + awaitDataSleepSeconds: 1 + showHUD: 0 diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Resources/ROSConnectionPrefab.prefab.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Resources/ROSConnectionPrefab.prefab.meta new file mode 100644 index 00000000..8b53986c --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Resources/ROSConnectionPrefab.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4bb0a54bbb17047b4bc3f23ad078129c +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Scenes.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Scenes.meta new file mode 100644 index 00000000..02eab014 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4658fa2281885459580e78b5f2fc09b3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Scenes/TutorialPoseEstimation.unity b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Scenes/TutorialPoseEstimation.unity new file mode 100644 index 00000000..87b67e45 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Scenes/TutorialPoseEstimation.unity @@ -0,0 +1,16303 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!43 &10283430 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 204 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 36 + localAABB: + m_Center: {x: 0.0005259821, y: 0.10266012, z: 0.00037912} + m_Extent: {x: 0.025631912, y: 0.04035442, z: 0.02573292} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 1e0011002300020001000300030001000c00010006000c0003000c000f000800060010000600080012000a000600120008000a0012000a000800130000000d0013000d000300130007000600140006000a0014000a001300140001000200160009000100160002000b0016000b000900160015000e00170005000d0018000d00000018000000100018001000050018000100090019000e0015001900020003001a000b0002001a0003000b001a000b0003001b0009000b001b000d0004001b0003000d001b00190009001b00040019001b00100000001c00080010001c00130008001c00000013001c0007001d001e001d0011001e00060001001f000d0005001f00050010001f00100006001f0015000d001f00010019001f00190015001f0003000f0020000f000c0020000c00110020001300030020000700140020001400130020001d000700200011001d0020000d001500210015001700210021001700220004000d00220017000e0022001900040022000e00190022000d00210022000600070023000c000600230011000c00230007001e002300 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 36 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 432 + _typelessdata: 82842ebcbc49813d158acdbc17b4fc3b8730123e04c4d43c1a92603c2cbb113ee0cec13c06fcfd3b7a61803debe8d53ccca1d53c9009813df16d10bcd28d203c3d61123ec6b2cfbcf4aacdbc2e46123e7e371d3c0088b7bcb2e8823d89437b3c2895abbc682c123eaa878bbc4156d53cda06123e8f06f63b0f26cbbcdba3813d4aa730bcb65ac43c1143813de1005f3cc4c80dbc3923123ec67fd43c2d48663c42347f3d5bd1c0bc3bddc43c7f14123e357e53bc0dae0cbc7a87813dd8f6d23cac5d0ebc914b123e9943cfbcceb187bc207f113e0b31b03c5064c9bcbf70113e871b2fbc2b0e9dbca3717f3dbd889ebcaa69cbbc7e89813d30981b3c4440a33cdb09123e9fca9bbc280fc43cd1e8113e74ab5e3c254bb23c9fe4813d0dba89bcd3e81f3ca8cb803d76cdcebc1549d63c3336123e4ae610bc88d9603c9aa3813d130ec23c2830d53ce135813de4dbf53b26b96fbc2bb7113eddb0bbbc502387bc3588823dff80af3c572fa8bc7862113e7cd28e3c6063643c6772123e6b24bfbc7db04fbcf05e813d17b0c23c1bd6a23c7d57813d71609bbc4959c53c27d7803d790a54bca56ebcbcf12f123edf26603c + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0.0005259821, y: 0.10266012, z: 0.00037912} + m_Extent: {x: 0.025631912, y: 0.04035442, z: 0.02573292} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &27488075 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 27488076} + - component: {fileID: 27488077} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &27488076 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 27488075} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.372505e-11, y: -7.1054206e-15, z: -0.000000029802322} + m_LocalScale: {x: 0.99999887, y: 1.0000011, z: 1} + m_Children: + - {fileID: 347434927} + m_Father: {fileID: 1289901342} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &27488077 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 27488075} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1c0c8ba1123c5f949b20e50d5dd6afe4, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!43 &53898141 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 114 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 21 + localAABB: + m_Center: {x: -0.026960287, y: 0.0101638585, z: 0.047125217} + m_Extent: {x: 0.020690493, y: 0.011836151, z: 0.016767886} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 0e000b001400020001000300030001000600020003000800010002000900050004000900040006000900060001000900080003000a00050003000c00040005000c00060004000c00030006000c00050009000d00090007000d000a0003000e0003000b000e00030005000f000b0003000f0005000b000f000700020010000200080010000d000700110008000d0011000700100011001000080011000a000000120008000a0012000d000800120000000d00120002000700130009000200130007000900130000000a0014000b000500140005000d0014000d00000014000a000e001400 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 21 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 252 + _typelessdata: 51c3e8bc20949f3c0bf3753d7b463bbdd030dbba8f99ff3c772d43bdd030dbbaa5ad073d98fbedbbd030dbba63da823d332705bd5c39b43cf2aff83cdb72cdbbedfdb33c6633703d312304bdd030dbba8f99ff3c772d43bd3958af3cd5f2363d7b463bbdd030dbbadaad463d28233fbd5d39b43cf1aff83c51c3e8bcd030dbba0bf3753d0e0a75bc3958af3c63da823d98fbedbbd030dbba2d126e3d6ac31bbd3958af3c72505e3db44a8abcd030dbba63da823d98fbedbb3958af3c63da823d772d43bdd030dbbab3d33e3d772d43bdc4d48f3cb3d33e3d312304bdd030dbba2d126e3d772d43bd3958af3ca5ad073d288bb9bc3958af3ce8d37d3d + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: -0.026960287, y: 0.0101638585, z: 0.047125217} + m_Extent: {x: 0.020690493, y: 0.011836151, z: 0.016767886} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &82561608 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 82561609} + - component: {fileID: 82561612} + - component: {fileID: 82561611} + - component: {fileID: 82561610} + m_Layer: 0 + m_Name: ee_link + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &82561609 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 82561608} + m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: -0.0819, y: 0.000000029802322, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1354105687} + - {fileID: 454323622} + m_Father: {fileID: 1002404875} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &82561610 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 82561608} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 074632cab556f5b408839af8574308df, type: 3} + m_Name: + m_EditorClassIdentifier: + xAxis: 0 + jointName: ee_fixed_joint + EffortLimit: 1000 + VelocityLimit: 1000 +--- !u!171741748 &82561611 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 82561608} + m_Enabled: 1 + m_Mass: 1 + m_ParentAnchorPosition: {x: -0.0819, y: 0.000000044703484, z: 0} + m_ParentAnchorRotation: {x: -0.5000001, y: -0.5000001, z: 0.5000001, w: 0.5000001} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068} + m_ComputeParentAnchor: 1 + m_ArticulationJointType: 0 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 2 + m_SwingZ: 2 + m_Twist: 2 + m_XDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_YDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_ZDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_Immovable: 0 + m_UseGravity: 1 +--- !u!114 &82561612 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 82561608} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fba5fd74d37a6cf4284698624eb8f6aa, type: 3} + m_Name: + m_EditorClassIdentifier: + IsBaseLink: 0 +--- !u!1 &94953891 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 94953894} + - component: {fileID: 94953893} + - component: {fileID: 94953895} + - component: {fileID: 94953892} + - component: {fileID: 94953896} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &94953892 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 94953891} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4467405dbcbd3d64ab4363e9ae8bb813, type: 3} + m_Name: + m_EditorClassIdentifier: + description: + captureRgbImages: 1 + firstCaptureFrame: 0 + captureTriggerMode: 0 + manualSensorAffectSimulationTiming: 0 + simulationDeltaTime: 0.0166 + framesBetweenCaptures: 0 + m_Labelers: + - id: 0 + showVisualizations: 1 + references: + version: 1 + 00000000: + type: {class: BoundingBox3DLabeler, ns: UnityEngine.Perception.GroundTruth, asm: Unity.Perception.Runtime} + data: + enabled: 1 + annotationId: 0bfbe00d-00fa-4555-88d1-471b58449f5c + idLabelConfig: {fileID: 11400000, guid: 24c39ac74f73840408cb11109db36655, type: 2} + visualizationColor: {r: 0, g: 1, b: 0, a: 1} +--- !u!20 &94953893 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 94953891} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 1 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &94953894 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 94953891} + m_LocalRotation: {x: 0.17364816, y: 0, z: 0, w: 0.9848078} + m_LocalPosition: {x: 0, y: 1.5, z: -1.4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 20, y: 0, z: 0} +--- !u!114 &94953895 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 94953891} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 +--- !u!114 &94953896 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 94953891} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7959b9c673ca0431aa9172059fbcb4fa, type: 3} + m_Name: + m_EditorClassIdentifier: + rootPosePosition: {x: 0, y: 0, z: 0} + rootPoseRotation: {x: 0, y: 0, z: 0} +--- !u!1 &103478477 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 103478478} + - component: {fileID: 103478479} + m_Layer: 0 + m_Name: Collisions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &103478478 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 103478477} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1011804503} + m_Father: {fileID: 958633842} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &103478479 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 103478477} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46398bc5d6905ad429a6d2d973afe002, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &123331619 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4376607151819607362, guid: 4073954b2af9f475da953eabfe4268cf, type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 4376607151819607362, guid: 4073954b2af9f475da953eabfe4268cf, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 90 + objectReference: {fileID: 0} + - target: {fileID: 4376607151819607362, guid: 4073954b2af9f475da953eabfe4268cf, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4376607151819607362, guid: 4073954b2af9f475da953eabfe4268cf, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8676940974252440994, guid: 4073954b2af9f475da953eabfe4268cf, type: 3} + propertyPath: m_Name + value: Goal + objectReference: {fileID: 0} + - target: {fileID: 8676940974252440994, guid: 4073954b2af9f475da953eabfe4268cf, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 4073954b2af9f475da953eabfe4268cf, type: 3} +--- !u!4 &123331620 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4376607151819607362, guid: 4073954b2af9f475da953eabfe4268cf, type: 3} + m_PrefabInstance: {fileID: 123331619} + m_PrefabAsset: {fileID: 0} +--- !u!1 &124217962 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 124217963} + - component: {fileID: 124217964} + m_Layer: 0 + m_Name: Collisions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &124217963 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 124217962} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1.1862517e-11, y: 0, z: -0.000000014901158} + m_LocalScale: {x: 0.99999946, y: 1.0000006, z: 1} + m_Children: + - {fileID: 1297919008} + m_Father: {fileID: 1248956524} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &124217964 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 124217962} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46398bc5d6905ad429a6d2d973afe002, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &130917710 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 130917711} + - component: {fileID: 130917712} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &130917711 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 130917710} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1306806979} + m_Father: {fileID: 651086952} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &130917712 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 130917710} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b2685e7e7719cd43814f41f35664c0b, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!1 &136668626 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 136668627} + - component: {fileID: 136668628} + m_Layer: 0 + m_Name: Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &136668627 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 136668626} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1539286627} + m_Father: {fileID: 958633842} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &136668628 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 136668626} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e9090ae501ff9cd459bec5271d40249c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &150120928 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 150120929} + - component: {fileID: 150120933} + - component: {fileID: 150120932} + - component: {fileID: 150120931} + - component: {fileID: 150120930} + m_Layer: 0 + m_Name: shoulder_link + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &150120929 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 150120928} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.1519, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 587358105} + - {fileID: 418190226} + - {fileID: 193008323} + m_Father: {fileID: 859020023} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &150120930 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 150120928} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 63b6193734b4c8444bcfdf4e9953fe2b, type: 3} + m_Name: + m_EditorClassIdentifier: + xAxis: 0 + jointName: shoulder_pan_joint + EffortLimit: 1000 + VelocityLimit: 1000 +--- !u!114 &150120931 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 150120928} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7631001c063f69d4495bca90731abab2, type: 3} + m_Name: + m_EditorClassIdentifier: + displayInertiaGizmo: 0 + useUrdfData: 1 + centerOfMass: {x: -0, y: 0, z: 0} + inertiaTensor: {x: 0.008093163, y: 0.005625, z: 0.008093163} + inertiaTensorRotation: {x: 0, y: 0, z: 0, w: 1} + inertialAxisRotation: {x: 0, y: 0, z: 0, w: 1} +--- !u!171741748 &150120932 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 150120928} + m_Enabled: 1 + m_Mass: 2 + m_ParentAnchorPosition: {x: 0, y: 0.1519, z: 0} + m_ParentAnchorRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071068} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071068} + m_ComputeParentAnchor: 1 + m_ArticulationJointType: 2 + m_LinearX: 1 + m_LinearY: 0 + m_LinearZ: 0 + m_SwingY: 2 + m_SwingZ: 2 + m_Twist: 1 + m_XDrive: + lowerLimit: -180 + upperLimit: 180 + stiffness: 0 + damping: 0 + forceLimit: 330 + target: 0 + targetVelocity: 0 + m_YDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_ZDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0 + m_JointFriction: 0 + m_Immovable: 0 + m_UseGravity: 1 +--- !u!114 &150120933 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 150120928} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fba5fd74d37a6cf4284698624eb8f6aa, type: 3} + m_Name: + m_EditorClassIdentifier: + IsBaseLink: 0 +--- !u!1 &163649340 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 163649341} + - component: {fileID: 163649342} + m_Layer: 0 + m_Name: Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &163649341 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 163649340} + m_LocalRotation: {x: -0, y: -0, z: -2.3161052e-23, w: 1} + m_LocalPosition: {x: -0.000000011153515, y: -0.0000000098814885, z: -0.000000014901163} + m_LocalScale: {x: 1, y: 1.0000002, z: 1} + m_Children: + - {fileID: 509888478} + m_Father: {fileID: 1240013164} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &163649342 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 163649340} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e9090ae501ff9cd459bec5271d40249c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!43 &168834489 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 372 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 64 + localAABB: + m_Center: {x: -0.0064557046, y: 0.005983942, z: -0.000088490546} + m_Extent: {x: 0.026241325, y: 0.026306223, z: 0.01239988} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 210031003f00080007000e0004000a00110004001100150011000d0015000500070016000a000400170004000f0017000f000600170006000f001a000f0018001a001a0010001c000c0019001d000d0011001e00030013001e0013001b001e00130003001f001b0013001f000e000b00200009000c0021001500090021000500160022001900050022001d00190022000400020023000f000400230002001200230018000f00230012001800230007000800240016000700240015000d00250003001e0026001e001100260010001200270014001c0027001c00100027000100000028000e000100280008000e0028000b000300290006000b002900170006002900050019002a0019001b002a00180012002b001a0018002b000b0006002c0020000b002c001b0019002d00000001002e00220000002e00140022002e0003000b002f001f0003002f001f002f0030000700050030000b000700300005002a0030002f000b00300012000200310021000c0031000d001e0032001e001b00320025000d0032002d00090032001b002d00320007000b0033000e00070033000b000e00330001000e0034000e00200034002c000600340020002c0034000900150035001500250035003200090035002500320035001c00140036001a001c0036002e000100360014002e00360011000a0037000a00170037000300260037002600110037002900030037001700290037000c000900380019000c00380009002d0038002d00190038001b001f0039002a001b0039001f003000390030002a003900120010003a0010001a003a002b0012003a001a002b003a000c001d003b001d0012003b00120031003b0031000c003b00000022003c00220016003c00240008003c00160024003c00280000003c00080028003c0006001a003d00010034003d00340006003d00360001003d001a0036003d0012001d003e00220014003e001d0022003e00270012003e00140027003e00020004003f00040015003f00150021003f00310002003f00 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 64 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 768 + _typelessdata: 52ed05bd6e1a973c9b80a3bb52ed05bd6e1a973cfbb39d3b7bd382bcb142043d9b80a3bb7415a23c40f29bbcfbb39d3bccb672bc9adf013dfbb39d3b767bacbc27ec1a3cc0883cbc9ea7c9bc3f4b463cb6b5493cebe1533c0b32a3bc02ec9abb6e4ee1bc40e8293c2a6fb6bb9c276e3bbc1e173b88da13bcef7c233c780663bb7d45e93beac0503c7d25a1bc0aa0933bb05fadbc19a48d3c069c4cbcb8e6933c90212abc9b80a3bb6e4ee1bc40e8293c8aa2b03b439ea8bceee8883cb6b5493cded4e7bc5a2dd23cd21c973bb8e6933c90212abcfbb39d3b439ea8bc9adf013d2a6fb6bb7415a23c40f29bbc9b80a3bb488100bdd149bd3ccdd99ebb7d4969bc0d0fff3c9b80a3bbb21fd3bc3f4b463c77ad39bcc0ceaf3b004b163a1f87073c8c9aa3bc8200ff3c92be963b8b3994bc28321c3c252f40bc9ea7c9bce384753cb6b5493c609d983cc1c08dbccd5ab6bbc345ffbc060fbc3c59b9973b3ac2b6bc19a48d3c069c4cbc08549d3ce4fa4fbc9b80a3bbaaa8873ce97aa6bc5e5e9dbbb21fd3bc955e333cae751a3cdfb895bcbfe8bc3cfe5b1dbcb21fd3bcea37593cbf2443bc7bd382bcb142043dfbb39d3b5ad6d7bc40e8293c560001bca46e8a3ceb4a17bccd5ab6bb08549d3ce4fa4fbcfbb39d3baa93e9bc34cad33cfd699ebb9b8c03bd19a48d3c2a6fb6bb4a258f3c991089bc2d8eb03b491873bc48d8983b42312ebc38c3acbcfaacfa3cabec963b0a69cebcead43c3c27c7363c31a5653ce49733bc8e23dcbbf3d302bd491eb43c27df9ebb1e8f833caae2a1bce035943b44a3613cd04fa6bcdc3e9dbb228a87bc9adf013d2a6fb6bbb8e6933c3a0e3dbccd5ab6bba031393c39c598bcc5ae903be8abfdbceee8883c4b6bd63b07b5523cda09bdbb8e23dcbb74fd01bd4808b33c08d2973b5b95783ceb4a17bcbc7cc33bdd268bbc08ce243c81b13fbc7d815a3c69d498bc0ebaabbb72f1c7bc7c9be83c10f0963b9ce7a3bce4f0dd3c560001bc473101bdeee8883c5c49c9bb2c7defbcc42d843c1f87073c8cd5fabc7f21bc3c66d6afbbccb672bc9adf013d9b80a3bb + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: -0.0064557046, y: 0.005983942, z: -0.000088490546} + m_Extent: {x: 0.026241325, y: 0.026306223, z: 0.01239988} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1001 &192919692 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 333540556} + m_Modifications: + - target: {fileID: 617801170161415482, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 3b0e2ceb0b7d245f185a3ccd43540485, type: 2} + - target: {fileID: 2498813151693771060, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_Name + value: robotiq_arg2f_140_inner_knuckle + objectReference: {fileID: 0} + - target: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_LocalScale.x + value: 0.9999978 + objectReference: {fileID: 0} + - target: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_LocalScale.y + value: 1.0000023 + objectReference: {fileID: 0} + - target: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_LocalPosition.x + value: 1.18634295e-11 + objectReference: {fileID: 0} + - target: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_LocalPosition.y + value: -7.1054134e-15 + objectReference: {fileID: 0} + - target: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_LocalPosition.z + value: -0.000000014901167 + objectReference: {fileID: 0} + - target: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 451c61199293e4b849190a10b7069f97, type: 3} +--- !u!4 &192919693 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + m_PrefabInstance: {fileID: 192919692} + m_PrefabAsset: {fileID: 0} +--- !u!1 &193008322 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 193008323} + - component: {fileID: 193008327} + - component: {fileID: 193008326} + - component: {fileID: 193008325} + - component: {fileID: 193008324} + m_Layer: 0 + m_Name: upper_arm_link + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &193008323 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 193008322} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.1198, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 204852057} + - {fileID: 728016273} + - {fileID: 2079063361} + m_Father: {fileID: 150120929} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &193008324 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 193008322} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 63b6193734b4c8444bcfdf4e9953fe2b, type: 3} + m_Name: + m_EditorClassIdentifier: + xAxis: 0 + jointName: shoulder_lift_joint + EffortLimit: 1000 + VelocityLimit: 1000 +--- !u!114 &193008325 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 193008322} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7631001c063f69d4495bca90731abab2, type: 3} + m_Name: + m_EditorClassIdentifier: + displayInertiaGizmo: 0 + useUrdfData: 1 + centerOfMass: {x: -0, y: 0.121825, z: 0} + inertiaTensor: {x: 0.021728484, y: 0.00961875, z: 0.021728484} + inertiaTensorRotation: {x: 0, y: 0, z: 0, w: 1} + inertialAxisRotation: {x: 0, y: 0, z: 0, w: 1} +--- !u!171741748 &193008326 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 193008322} + m_Enabled: 1 + m_Mass: 3.42 + m_ParentAnchorPosition: {x: -0.1198, y: 0, z: 0} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_ComputeParentAnchor: 1 + m_ArticulationJointType: 2 + m_LinearX: 1 + m_LinearY: 0 + m_LinearZ: 0 + m_SwingY: 2 + m_SwingZ: 2 + m_Twist: 1 + m_XDrive: + lowerLimit: -180 + upperLimit: 180 + stiffness: 0 + damping: 0 + forceLimit: 330 + target: 0 + targetVelocity: 0 + m_YDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_ZDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0 + m_JointFriction: 0 + m_Immovable: 0 + m_UseGravity: 1 +--- !u!114 &193008327 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 193008322} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fba5fd74d37a6cf4284698624eb8f6aa, type: 3} + m_Name: + m_EditorClassIdentifier: + IsBaseLink: 0 +--- !u!1001 &203940112 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1491597150} + m_Modifications: + - target: {fileID: 53882893725327671, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_Name + value: robotiq_arg2f_140_inner_finger + objectReference: {fileID: 0} + - target: {fileID: 223261204407907176, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 3b0e2ceb0b7d245f185a3ccd43540485, type: 2} + - target: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_LocalScale.x + value: 0.9999999 + objectReference: {fileID: 0} + - target: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_LocalScale.y + value: 1.0000001 + objectReference: {fileID: 0} + - target: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_LocalPosition.x + value: -0.000000011175878 + objectReference: {fileID: 0} + - target: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_LocalPosition.y + value: -0.000000011175867 + objectReference: {fileID: 0} + - target: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_LocalPosition.z + value: -0.000000014901158 + objectReference: {fileID: 0} + - target: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} +--- !u!4 &203940113 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + m_PrefabInstance: {fileID: 203940112} + m_PrefabAsset: {fileID: 0} +--- !u!1 &204852056 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 204852057} + - component: {fileID: 204852058} + m_Layer: 0 + m_Name: Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &204852057 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 204852056} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1206775186} + m_Father: {fileID: 193008323} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &204852058 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 204852056} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e9090ae501ff9cd459bec5271d40249c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &218868507 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 218868508} + - component: {fileID: 218868509} + m_Layer: 0 + m_Name: Collisions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &218868508 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 218868507} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.000000011175875, y: -0.00000000931322, z: 0.000000014901163} + m_LocalScale: {x: 0.99999976, y: 1.0000001, z: 1} + m_Children: + - {fileID: 1172479706} + m_Father: {fileID: 334621409} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &218868509 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 218868507} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46398bc5d6905ad429a6d2d973afe002, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &224222865 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224222866} + - component: {fileID: 224222867} + m_Layer: 0 + m_Name: Collisions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &224222866 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 224222865} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1519062818} + m_Father: {fileID: 2079063361} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &224222867 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 224222865} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46398bc5d6905ad429a6d2d973afe002, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!43 &240310602 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 180 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 32 + localAABB: + m_Center: {x: 0.028324787, y: 0.04544718, z: 0.031197954} + m_Extent: {x: 0.035583492, y: 0.024040543, z: 0.032698344} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 0f0011001f00020001000500010002000600020003000600050001000600040005000600060003000700040006000700020005000800040007000900080005000a00030002000c00070003000d0003000c000d00050004000e00040009000e0008000b00100008000a0011000b00080011000f000a0012000000070013001300070014001300140015001100000015000b001100150000001300150014000b00150007000000160000000900160009000700160007000d0017001200090018000f00120018000c00080019000d000c00190008001000190017000d00190010001700190010000b001a00140007001a000b0014001a00070017001a00170010001a000e0009001b000a000e001b00090012001b0012000a001b00090000001c00000011001c0011000f001c00180009001c000f0018001c00020008001d000c0002001d0008000c001d000a0005001e0005000e001e000e000a001e000a000f001f0011000a001f00 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 32 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 384 + _typelessdata: c8bc463d6835fe3cab24273d6013d1bb4839b43ca5c335ba70daedbbf85caf3c10dc823d70daedbb944f8e3da1af463df8fa413dba7a8b3de941c73958e2823df85caf3cc0a8c4ba70daedbb944f8e3dc0a8c4ba2869d03c944f8e3d16092f3ddce8b03cf85caf3cb5d37d3dc8bc463d5b5e8a3de48c633c4fdd7d3df85caf3c5edcb03cb96d173dba2bbf3c764f5e3d3850443c9df0ce3c10dc823d85d0633c5b5e8a3da1af463d58e2823d9df0ce3c1216443c153d663d9df0ce3c22a7073d2869d03c9df0ce3c00f6753dc8bc463df85caf3c81ed363d3bfd753d9df0ce3c3153d03cb96d173d7e5f2e3d36cb3e3db96d173d8570ee3cc171563d54f5363dba2bbf3ca1af463d2e6d173dc959853dda92ff3c5237a13c5b5e8a3d36cb3e3d153d663d6835fe3cdde4ef3c8f68913ca1abde3cb5d37d3de1b4073d9df0ce3c2a2d663d4fdd7d3da1abde3cb24a913cef7c563d8570ee3c4269173d85d0633cf85caf3c10dc823d58e2823df85caf3ce48c633c025d5e3df85caf3c4269173d + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0.028324787, y: 0.04544718, z: 0.031197954} + m_Extent: {x: 0.035583492, y: 0.024040543, z: 0.032698344} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &287796485 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 287796486} + - component: {fileID: 287796487} + m_Layer: 0 + m_Name: Box + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &287796486 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 287796485} + m_LocalRotation: {x: 0.00000004214682, y: -3.552712e-15, z: -1.4210848e-14, w: 1} + m_LocalPosition: {x: -0.000000026611747, y: 0.0000000036687313, z: -0.00000002980237} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1316688962} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &287796487 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 287796485} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!1 &294812820 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 294812823} + - component: {fileID: 294812822} + - component: {fileID: 294812821} + m_Layer: 0 + m_Name: ur3_with_gripper + m_TagString: robot + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &294812821 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 294812820} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d607ea46a579d44c4b19a6322ce4b9b2, type: 3} + m_Name: + m_EditorClassIdentifier: + selectedJoint: + selectedIndex: 0 + control: 0 + stiffness: 10000 + damping: 1000 + forceLimit: 1000 + speed: 5 + torque: 100 + acceleration: 5 + highLightColor: {r: 255, g: 0, b: 0, a: 255} +--- !u!114 &294812822 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 294812820} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fbf4c79288754864b8d522b69f4b52a8, type: 3} + m_Name: + m_EditorClassIdentifier: + FilePath: + choosenAxis: 1 + currentOrientation: 1 + collisionExceptions: [] +--- !u!4 &294812823 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 294812820} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1573113621} + - {fileID: 745613285} + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!43 &319820692 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 372 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 64 + localAABB: + m_Center: {x: 0.0002463907, y: 0.043630112, z: 0.000037528574} + m_Extent: {x: 0.04342577, y: 0.04710592, z: 0.03826607} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 330021003f00030000000900020005000a00000003000c000e000b00120011000500130001001200140012000b0014000c000300160006000c001600060016001900010014001a000b000e001b0014000b001b000e0018001b00120000001d000e0012001d00110010001e00090007001f00100011001f0011001c001f0006000f00200020000f00210008002000210013000d0023000e000800240018000e0024000800210024000900000025000700090025001200010025000000120025000a000500270014000a0027001a001400270002000a0028001900020028000f00190028000d0002002a00160003002a00030023002a0023000d002a00050002002b0002000d002b000d0013002b00150005002b00130015002b00110013002c001c0011002c00130023002c0023001c002c001d0000002d000e001d002d00130005002e00050015002e00150013002e00060020002f00200008002f00080022002f0003000900300009001f0030001f001c0030002300030030001c00230030001a00100031001f000700310010001f00310007002900310029001a0031000200190032001900160032002a000200320016002a0032000a001700330017002400330024002100330018000400340014001b0034001b00180034000f000600350006001900350019000f00350008000e0036002200080036000e002d0036000a00140037003400040037001400340037000c000600380006002f0038002f002200380001001a0039000700250039002500010039002900070039001a0029003900050011003a001e0005003a0011001e003a0010001a003b0005001e003b001e0010003b00270005003b001a0027003b00180024003c00240017003c00260018003c0026003c003d0017000a003d00040018003d00180026003d00370004003d000a0037003d003c0017003d0000000c003e002d0000003e00220036003e0036002d003e000c0038003e00380022003e0021000f003f0028000a003f000f0028003f000a0033003f00 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 64 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 768 + _typelessdata: 38ae8c3cd0d3b93dc12628bcc6ff773bc807253beed316bdcaa488bc002607ba9bc90a3d33b194bcd0d3b93d9161293cf8dd0e3d88042c3bcad44fbc34b218bd002607ba00681d38cfa3083c3402f93c3ce41c3d43f460bca082023d098a16bd74d22c3dc9017b3d9733113c33b194bcd0d3b93dc12628bc189e023d60ca63bb104af23bbffbbc3c325e053d6ea5edbc38ae8c3cd0d3b93d9161293c71d6b8bcddeef83cf7c5043d74d22c3dc9017b3dc7f80fbc063ea93cf823383b48f0fd3c3b25dfbcb1be343bb081cfbcdcdc30bd8cf3683dc7f80fbccfa3083cf478023d88951cbddcdc30bd8cf3683d9733113ca1ba983cc09009ba437704bdb32106bdfc9b8d3becc6953cf39000bca082023d3ce41c3dd859143de867873b7c5b223c94e1323da3db563d70d4efbbf6ca773b806d273b3d00173d642641bc4314963a34150bbd7fa7e23c0c6b8b3bf004cfbc54c11ebd7292893d70d4efbb4ae5b03cc9c3b33dc12628bc1c120cbdc1da8b3bbbc47cbc54c11ebd8cf3683d4a6358bc81a6bc3cde72053d59d6ed3c44d5ec3cd0b2923b90fac23cf116e13c12b7a73d9733113cdbe2c4bc06c3b03d9733113c94e1323d8cf3683d104af23bf39000bca082023d88951cbdc97b1a3d6043e13b176b36bb3a6b13bc3712f8b9ca6ed1bc3109883c2bb6f2b9bcaadd3c53d056bc104b8b3bb8dd0fbd43f460bca082023dbdd8163de2fbdebc98aa363beef8cf3cbecd2abd7d86803d104af23b49ecc83cdcc7b03d70d4efbbb58312bddecd853be2ae393c40cc263dc9017b3d9161293c71d6b8bc9ec8b33dc7f80fbcdbaeafbc15a7913bd7effbbc67e5f5bb44b5883b3740163d0492023d56a78b3be384a13c23b3023d8a5d8a3bb210a1bce8e8483ca311843b8af2103dd6bf1a3d34938c3d104af23b0972033dfb0c7fb9f61250bc4ae5b03cdcc7b03d9161293c4a65f6bb322a863b183d16bd169812bdd81a853ba38d38bc39f8f6bc06c0a03aa2cca1bca1761a3dd86be13b21503b3be0e8143d4ff8273b62ace6bbdfdfbc3cc9c3b33d104af23b0251e43ce05c943a74f4b93c + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0.0002463907, y: 0.043630112, z: 0.000037528574} + m_Extent: {x: 0.04342577, y: 0.04710592, z: 0.03826607} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!43 &320211345 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 372 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 64 + localAABB: + m_Center: {x: 0.0037807524, y: 0.19685084, z: -0.00074108224} + m_Extent: {x: 0.044632904, y: 0.0473468, z: 0.03116363} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 08002a003f00030004000f0008000400120004000300160012000400160003001500160002000e0017000e0007001700040008001a00120016001b0019000a001d00150003001f00070015001f00170007001f00100017001f000300060020001700100020001f000300200010001f00200016001500220007000e00250003000900260009001900260019001d00260002000c0027000e00020027000c001c0027001c000e0027000100110028000e001b0028001b000b00280022000100280025000e0028001100250028000d001a002900240000002900240029002a001c000c002a000c0024002a00050008002b00080012002b001b0005002b0012001b002b00140002002c00020017002c00170014002c00090003002d0003000f002d000f0013002d000c0002002e00020014002e000b001b002f001b0016002f001300000030002100130030000000240030002400230030000f000400310004001a0031001a000d0031000d001e0031001e000f00310011000100320001002200320022001500320025001100320015002500320000001300330013000f0033002900000033000d002900330008000500340005001b0034001b000e0034001e000d0035000f001e0035000d003300350033000f00350016002200360028000b0036002200280036000b002f0036002f00160036000600030037001d001800370023000600370018002300370003002600370026001d00370024000c0038002300240038000c002e0038002e0014003800140017003900200006003900170020003900060023003900380014003900230038003900150007003a00070025003a00250015003a000e001c003b002a0008003b001c002a003b00080034003b0034000e003b00190009003c000a0019003c0021000a003d00130021003d0009002d003d002d0013003d003c0009003d000a003c003d0018001d003e001d000a003e000a0021003e00230018003e00210030003e00300023003e001a0008003f0029001a003f002a0029003f00 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 64 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 768 + _typelessdata: 140a343dc57f753ee18a4e3c6eb816bdeb3d3a3e21e096bb364cd63cfa2f1a3ee07b11bc02e723bd82c2633e0366f5bcab0423bd497d613ebb14f93c1445013c1bd0193ec633d43c1aed2a3de7b35e3e84ae02bd382b0bbc5bd7193e4175cfbc140a343df408513eb538f93c4f9926bd35e1793e6844a3bb20d0213d5bc7773e06bb85bcad10bcbc1f9e193e7ed85f3c664d463dd813413ef920f3bbc06be83c99f0703e9bb1d43c4ba0b83c9617193e504e823c965427bd5ae4773e81df443ce304233c0cac2c3e5b87f1bc52cac8bc5d7a1a3e8aa031bca195d5bb849a2e3e85def73c20d0213df20e7a3ec7032a3c140a343d9f2f4a3ea3e3e0bcd75f1fbdf93d4e3e3e37efbcae791fbd6156503e6ee5f33ce9b8223c12dc193e2361cfbc140a343d6c616c3e16a0cebcaf8a24bdb301753e605e8fbc1aed2a3daa8a653eb538f93c9ad60bbc86ab193ed5dcd43c0e273d3dd813413e8acc8b3c1aed2a3d6c616c3ea3e3e0bcd42524bd5a7f6e3e174cc73c9bf10bbc1d9d2c3e3a03f2bc20d0213df408513e84ae02bd1aed2a3df20e7a3ef920f3bb353a1abdc5f03b3ebb8a353c0e273d3de7b35e3ea3e3e0bc0e273d3d1343633ee18a4e3c1c9c99bc6ad1193e5c349dbc407524bd0e696c3e12dbd3bc1d5cd53cb56a1a3e8ee1f03bf361cdbc6185193eaba21c3c140a343d02a96e3e0e6ec23c0e273d3dc7794c3e9bb1d43c8dfabf3ba18d2c3eae48f73cb241913c82131b3e678ca9bc2b1c27bd1d057a3ed0c4653b0e273d3d42cc3e3ef1ee66bc6a3d87bcaa441a3eddc8b03c140a343d5bc7773e9e49aabbf5b623bd3000683e34ffe83cdb0a1cbdbd00463eb701cabc20d0213dc57f753e61029e3c7629963c663c193e43e5a33cc88124bdebdc723e0075a53c78de1cbd36104a3ecca5df3c1aed2a3d40d2673e3027f3bc664d463d6f5b433ed76742bc140a343d5ec14e3e3027f3bc3ece6cbcd9561a3ed2b3bcbc140a343d9bea473e9bb1d43cdc9a24bd722d773e32135abc20d0213df20e7a3e96171ebc140a343d2f38733e92fe97bc140a343d7dfb603eb538f93c + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0.0037807524, y: 0.19685084, z: -0.00074108224} + m_Extent: {x: 0.044632904, y: 0.0473468, z: 0.03116363} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &323232827 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 323232828} + - component: {fileID: 323232829} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &323232828 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 323232827} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 628586286} + m_Father: {fileID: 2116473941} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &323232829 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 323232827} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b2685e7e7719cd43814f41f35664c0b, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!1001 &332214909 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1446706346} + m_Modifications: + - target: {fileID: 5697005687179860018, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_Name + value: robotiq_arg2f_140_inner_knuckle + objectReference: {fileID: 0} + - target: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_LocalScale.x + value: 0.9999978 + objectReference: {fileID: 0} + - target: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_LocalScale.y + value: 1.0000023 + objectReference: {fileID: 0} + - target: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_LocalPosition.x + value: 1.18634295e-11 + objectReference: {fileID: 0} + - target: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_LocalPosition.y + value: -7.1054134e-15 + objectReference: {fileID: 0} + - target: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_LocalPosition.z + value: -0.000000014901167 + objectReference: {fileID: 0} + - target: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 7108574193541098280, guid: a29a365f43d59450fb69adb775090b94, type: 3} + - {fileID: 3917207196220425563, guid: a29a365f43d59450fb69adb775090b94, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: a29a365f43d59450fb69adb775090b94, type: 3} +--- !u!4 &332214910 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + m_PrefabInstance: {fileID: 332214909} + m_PrefabAsset: {fileID: 0} +--- !u!1 &332214911 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 7208441754978959086, guid: a29a365f43d59450fb69adb775090b94, type: 3} + m_PrefabInstance: {fileID: 332214909} + m_PrefabAsset: {fileID: 0} +--- !u!64 &332214912 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 332214911} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 1118981737} +--- !u!1 &333540555 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 333540556} + - component: {fileID: 333540557} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &333540556 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 333540555} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.372505e-11, y: -7.1054206e-15, z: -0.000000029802322} + m_LocalScale: {x: 0.99999887, y: 1.0000011, z: 1} + m_Children: + - {fileID: 192919693} + m_Father: {fileID: 1295864729} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &333540557 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 333540555} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b2685e7e7719cd43814f41f35664c0b, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!1 &334621408 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 334621409} + - component: {fileID: 334621413} + - component: {fileID: 334621412} + - component: {fileID: 334621411} + - component: {fileID: 334621410} + m_Layer: 0 + m_Name: right_inner_finger + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &334621409 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 334621408} + m_LocalRotation: {x: 0, y: 0, z: 0.3546129, w: 0.93501323} + m_LocalPosition: {x: -0.08175553, y: -0.028220303, z: 0.000000029335034} + m_LocalScale: {x: 0.99999976, y: 1.0000002, z: 1} + m_Children: + - {fileID: 1751193719} + - {fileID: 218868508} + - {fileID: 1619744094} + m_Father: {fileID: 1557562617} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &334621410 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 334621408} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 63b6193734b4c8444bcfdf4e9953fe2b, type: 3} + m_Name: + m_EditorClassIdentifier: + xAxis: 0 + jointName: right_inner_finger_joint + EffortLimit: 1000 + VelocityLimit: 1000 +--- !u!114 &334621411 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 334621408} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7631001c063f69d4495bca90731abab2, type: 3} + m_Name: + m_EditorClassIdentifier: + displayInertiaGizmo: 0 + useUrdfData: 1 + centerOfMass: {x: -0.016007824, y: -0.013694567, z: 0.0003} + inertiaTensor: {x: 0.000001, y: 0.0000025576783, z: 0.000002719095} + inertiaTensorRotation: {x: 0.17938827, y: -0.9837784, z: -4.4743248e-13, w: 8.123711e-14} + inertialAxisRotation: {x: 0, y: 0, z: 0, w: 1} +--- !u!171741748 &334621412 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 334621408} + m_Enabled: 1 + m_Mass: 0.010400313 + m_ParentAnchorPosition: {x: -0.08175563, y: -0.028220259, z: 0.000000036785593} + m_ParentAnchorRotation: {x: -0.25074926, y: 0.6611543, z: 0.25074932, w: 0.6611543} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_ComputeParentAnchor: 1 + m_ArticulationJointType: 2 + m_LinearX: 1 + m_LinearY: 0 + m_LinearZ: 0 + m_SwingY: 2 + m_SwingZ: 2 + m_Twist: 1 + m_XDrive: + lowerLimit: -50.173916 + upperLimit: 50.173916 + stiffness: 0 + damping: 0 + forceLimit: 1000 + target: 0 + targetVelocity: 0 + m_YDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_ZDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0 + m_JointFriction: 0 + m_Immovable: 0 + m_UseGravity: 1 +--- !u!114 &334621413 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 334621408} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fba5fd74d37a6cf4284698624eb8f6aa, type: 3} + m_Name: + m_EditorClassIdentifier: + IsBaseLink: 0 +--- !u!1001 &347434926 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 27488076} + m_Modifications: + - target: {fileID: 4850610356718183796, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_Name + value: robotiq_arg2f_140_outer_knuckle + objectReference: {fileID: 0} + - target: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_LocalScale.x + value: 0.9999978 + objectReference: {fileID: 0} + - target: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_LocalScale.y + value: 1.0000023 + objectReference: {fileID: 0} + - target: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_LocalPosition.x + value: 1.18634295e-11 + objectReference: {fileID: 0} + - target: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_LocalPosition.y + value: -7.1054134e-15 + objectReference: {fileID: 0} + - target: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_LocalPosition.z + value: -0.000000014901167 + objectReference: {fileID: 0} + - target: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 3936263923955274429, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + - {fileID: 926149587587812734, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} +--- !u!4 &347434927 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + m_PrefabInstance: {fileID: 347434926} + m_PrefabAsset: {fileID: 0} +--- !u!1 &347434928 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 7707470127448741905, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + m_PrefabInstance: {fileID: 347434926} + m_PrefabAsset: {fileID: 0} +--- !u!64 &347434929 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 347434928} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 168834489} +--- !u!1 &349382768 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 349382769} + - component: {fileID: 349382770} + m_Layer: 0 + m_Name: Collisions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &349382769 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 349382768} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.000000014901161, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1739443087} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &349382770 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 349382768} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46398bc5d6905ad429a6d2d973afe002, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &350798524 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 350798525} + - component: {fileID: 350798527} + - component: {fileID: 350798526} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &350798525 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 350798524} + m_LocalRotation: {x: 0.00000004214682, y: -3.552712e-15, z: -1.4210848e-14, w: 1} + m_LocalPosition: {x: -0.000000026611747, y: 0.0000000036687313, z: -0.00000002980237} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 369889010} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &350798526 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 350798524} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 78c14991df9d143128adc14ecc3b0b6d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &350798527 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 350798524} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1001 &359584698 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 596915545564621050, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 596915545564621050, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 596915545564621050, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 596915545564621050, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 596915545564621050, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 596915545564621050, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1661314376085742098, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1661314376085742098, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1661314376085742098, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1661314376085742098, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1661314376085742098, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1661314376085742098, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2378463647655926426, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2378463647655926426, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2378463647655926426, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2378463647655926426, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2378463647655926426, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2378463647655926426, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3300145754874980273, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: goal + value: + objectReference: {fileID: 123331620} + - target: {fileID: 3300145754874980273, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: robot + value: + objectReference: {fileID: 294812820} + - target: {fileID: 3300145754874980273, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: target + value: + objectReference: {fileID: 1994679286} + - target: {fileID: 3300145754874980273, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: scenario + value: + objectReference: {fileID: 783648245} + - target: {fileID: 4060100200923292977, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_RootOrder + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 4060100200923292977, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4060100200923292977, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4060100200923292977, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612519766423759, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612519766423759, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612519766423759, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612519766423759, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612519921590487, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612519921590487, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612519921590487, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612519921590487, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612519921590487, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612519921590487, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612520428586362, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612520428586362, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612520428586362, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612520428586362, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612520428586362, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612520428586362, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612520526500489, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612520526500489, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612520526500489, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612520526500489, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612521249688876, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612521249688876, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612521249688876, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612521249688876, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612521249688876, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612521249688876, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612521252200232, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612521252200232, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612521252200232, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612521252200232, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612521252200232, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6065612521252200232, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6222212641188072032, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6222212641188072032, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6222212641188072032, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6222212641188072032, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6222212641188072032, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6222212641188072032, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6403084249825688909, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6403084249825688909, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6403084249825688909, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6403084249825688909, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9002731091214138362, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_Name + value: ROSObjects + objectReference: {fileID: 0} + - target: {fileID: 9002731091214138362, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 62e36fbf0e85040b2985c08ad46657f9, type: 3} +--- !u!1 &369889009 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 369889010} + - component: {fileID: 369889011} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &369889010 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 369889009} + m_LocalRotation: {x: -0.00000004214682, y: 3.552712e-15, z: 1.4210848e-14, w: 1} + m_LocalPosition: {x: -0.00000006310499, y: -0.0000000038160555, z: -0.00000005960469} + m_LocalScale: {x: 0.065, y: 0.0075, z: 0.027} + m_Children: + - {fileID: 350798525} + m_Father: {fileID: 2114151218} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &369889011 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 369889009} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b2685e7e7719cd43814f41f35664c0b, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 0 +--- !u!1 &377676474 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 377676475} + - component: {fileID: 377676479} + - component: {fileID: 377676478} + - component: {fileID: 377676477} + - component: {fileID: 377676476} + m_Layer: 0 + m_Name: left_inner_finger + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &377676475 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 377676474} + m_LocalRotation: {x: 0, y: 0, z: 0.3546129, w: 0.93501323} + m_LocalPosition: {x: -0.08175552, y: -0.028220318, z: -0.000000037720195} + m_LocalScale: {x: 1, y: 1.0000002, z: 1} + m_Children: + - {fileID: 1395448827} + - {fileID: 1271465853} + - {fileID: 1689329240} + m_Father: {fileID: 1240013164} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &377676476 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 377676474} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 63b6193734b4c8444bcfdf4e9953fe2b, type: 3} + m_Name: + m_EditorClassIdentifier: + xAxis: 0 + jointName: left_inner_finger_joint + EffortLimit: 1000 + VelocityLimit: 1000 +--- !u!114 &377676477 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 377676474} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7631001c063f69d4495bca90731abab2, type: 3} + m_Name: + m_EditorClassIdentifier: + displayInertiaGizmo: 0 + useUrdfData: 1 + centerOfMass: {x: -0.016007824, y: -0.013694567, z: 0.0003} + inertiaTensor: {x: 0.000001, y: 0.0000025576783, z: 0.000002719095} + inertiaTensorRotation: {x: 0.17938827, y: -0.9837784, z: -4.4743248e-13, w: 8.123711e-14} + inertialAxisRotation: {x: 0, y: 0, z: 0, w: 1} +--- !u!171741748 &377676478 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 377676474} + m_Enabled: 1 + m_Mass: 0.010400313 + m_ParentAnchorPosition: {x: -0.08175554, y: -0.028220348, z: -0.00000006752252} + m_ParentAnchorRotation: {x: -0.25074926, y: 0.6611543, z: 0.25074932, w: 0.6611543} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_ComputeParentAnchor: 1 + m_ArticulationJointType: 2 + m_LinearX: 1 + m_LinearY: 0 + m_LinearZ: 0 + m_SwingY: 2 + m_SwingZ: 2 + m_Twist: 1 + m_XDrive: + lowerLimit: -50.173916 + upperLimit: 50.173916 + stiffness: 0 + damping: 0 + forceLimit: 1000 + target: 0 + targetVelocity: 0 + m_YDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_ZDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0 + m_JointFriction: 0 + m_Immovable: 0 + m_UseGravity: 1 +--- !u!114 &377676479 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 377676474} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fba5fd74d37a6cf4284698624eb8f6aa, type: 3} + m_Name: + m_EditorClassIdentifier: + IsBaseLink: 0 +--- !u!43 &390043028 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 372 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 64 + localAABB: + m_Center: {x: -0.060893647, y: 0.0015260074, z: -0.0008082008} + m_Extent: {x: 0.02014157, y: 0.034839474, z: 0.031539332} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 1e003b003f00000001000800080009000c00040005000d0009000800120004000d00130007001200150012000800150017000b0018000300170018001000140019000700150019000b0017001a00000008001c00160000001c000f0004001d0012001d001e001d0004001e000a0010001f000500040022000800010022000e000800220004000f0022001700050022001a001700220008000e00230013000900250010000a0026000400130027001e000400270013002500270016000c00280018000b0028000c001800280005000300290011000500290003002100290021001100290014000f002a00190014002a000d0005002b00050011002b0020000d002b00110020002b00020015002c00150008002c001f0002002c00080023002c000f0014002d00140006002d001b000e002d000e0022002d0022000f002d00060026002d00120007002e00070019002e000f001d002e001d0012002e002a000f002e0019002a002e00060014002f00140010002f00260006002f00100026002f0015000200300002001f00300009002400310024000d0031002000090032000d002000320009003100320031000d0032001000190033001900150033001f001000340015003000340030001f00340010003300340033001500340001000000350000001600350016001a0035002200010035001a00220035000e000a0036000a001f00360023000e0036001f002c0036002c00230036000a000e0037000e001b00370026000a0037001b002d0037002d002600370009001300380013000d0038002400090038000d0024003800030005003900170003003900050017003900090020003a00200011003a00210009003a00110021003a00250009003b001e0027003b00270025003b000c0009003c00030018003c0018000c003c00210003003c00090021003c001a0016003d000b001a003d00160028003d0028000b003d0008000c003e000c0016003e001c0008003e0016001c003e00090012003f0012001e003f003b0009003f00 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 64 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 768 + _typelessdata: 0f813dbd1772ce3b32a6f93c24102cbd25811b3c261ff13c4729a2bda37bea3cefebe93b2722a2bd14c4fcbc8a465d3c754f27bd46cfd3bb87e6ffbca7eb26bdb37308bd8affc83b0e1128bd2f8ee03c87f731bc6be4a3bd51d85e3cbc92d9bccbf5a5bd73b97b3cb1eedf3ccbf5a5bd4926d1bc0076b7bc2df47ebdf8f3143dfb1f873b41de27bdab1494bc5c43df3ccf57a4bd5cc974bc9596e83c882a27bd6c9c03bdd8e933bc2d8527bd692fbf3cb67f9a3c178c27bdc04b0a3c5b66f6bce24386bdf8f3143deb649abb2f5aa2bd25e707bd461465bbcbf5a5bd9b188d3b62e4ffbc3c8027bd527b9dbc2266dcbcc8f327bdf6dfac3c31ceafbc3c0da4bdf790d73c96e342bc246ba2bd5f5d0dbcdbbffb3c686627bdc54aecbc9a48893c7370a2bd8d80c1bce880be3c48d6a1bd05db9a3cc34ac0bc21d027bd68dd0bbce381f93c43e027bd34d3e93c5f85c63bcddea1bd4663cd3b721df83c481f44bd130a523bd97e04bdbf62a2bd745ab1bbb72c00bdae0d8dbdf8f3143d06fbfa3a7f54a2bd7f7003bdc42e22bcfc4da4bd14b502bd0eaee93bb63927bd45303f3c20d0e93c3d26a2bd12e8be3c97369a3c37fb41bdbcedc7bc2c71b8bc00f2a1bdd1f48abcde6ee3bc1de775bdf8f3143d80279ab967e441bd6d7751bc1389f5bcea5553bdfe2e8bbc36a0e73c143ea2bd568007bd5dd6813b087346bdbb32713cf5a0dabcad547abd8d8f07bd85eedabb2be5a3bd1654df3cb04e273c0ec527bdac1fea3c50b363bbfafa96bda29a4d3ce130e2bc5abd81bdf8f3143deb649abb2ecea1bd305ee83c0fb8fabb459f57bd01c8eabcd13c8dbcf70da2bda939fcbcf21755bcf3cda1bd41d7c53cb2608cbc83cc8abdf8f3143d9d686cbb369627bd5ab2063b7a37fa3c268788bdf8f3143dfb1f873b1de775bdf8f3143dbdde453b297d2cbd9d7dadbc7d00d2bc157346bdf149fbbce3fe5b3c1940a4bd8b8602bdebc30fbcea39a2bde4c263bcded0edbcbc29a4bdf3d2c7bcbfdfaa3c39903dbd724f1dbc0b65f93cdf0da4bd75734b3b1239f83c7e08a4bd56691cbc6e3af4bc + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: -0.060893647, y: 0.0015260074, z: -0.0008082008} + m_Extent: {x: 0.02014157, y: 0.034839474, z: 0.031539332} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &418190225 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 418190226} + - component: {fileID: 418190227} + m_Layer: 0 + m_Name: Collisions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &418190226 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 418190225} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1373623302} + m_Father: {fileID: 150120929} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &418190227 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 418190225} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46398bc5d6905ad429a6d2d973afe002, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!43 &427510536 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 198 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 35 + localAABB: + m_Center: {x: 0.08314259, y: 0.006019177, z: 0.0052328445} + m_Extent: {x: 0.017310888, y: 0.0076937275, z: 0.012501083} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 190020002200020001000400040001000600060007000b00080003000b00070006000d00020004000e00030004000f00040006000f000300080010000e00040010000100020011000000080013000b000700130008000b0013000c00000013000c00130014000d000500140007000d0014001300070014000b000300150006000b00150003000f0015000f000600150009000e0016001000080016000e001000160012000900160002000e0017000e00090017001100020018000c0014001a00140005001a000a0019001a00060001001b000d0006001b000d001b001c0005000d001c00010011001c001b0001001c0018000a001d00110018001d000a001a001d001a0005001d0005001c001d001c0011001d00040003001e00030010001e00100004001e00080000001f00000012001f00160008001f00120016001f0009001200200019000a0020000200170021001700090021000a001800210018000200210009002000210020000a00210000000c0022001200000022000c001a0022001a0019002200200012002200 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 35 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 420 + _typelessdata: 8ebacd3ddb9e213c3a72243cc6d2863d5e5d0e3b692aeebbc6d2863ddb9e213c692aeebb5527b23d5e5d0e3bbe46913cc6d2863da228413c77d3ca3bc716b63d70468339b443c4bac6d2863d987cdbba21001a3b56d6c53d987cdbbaba7a633ce4e6c13da228413cbe46913cff65a23d17ac603cb443c4ba5527b23ddb9e213cd63260bbe4e6c13d987cdbbabe46913c8ec7c93d5e5d0e3b77d3ca3b3857a63d987cdbbab443c4bac6d2863d17ac603c21001a3bc6d2863d5e5d0e3b77d3ca3bc716b63da228413cbe46913c54859a3d3c42863b692aeebb56d6c53da228413c77d3ca3b8ebacd3d5e5d0e3b7af6433c56d6c53d987cdbbafbed043c0008ba3d987cdbbabe46913caa46aa3d17ac603c8f088c3bc6d2863d17ac603cd63260bbe295963ddb9e213c692aeebb72f7bd3ddb9e213c2079df390008ba3d5e5d0e3bb443c4bac6d2863d987cdbbab443c4ba8d769e3d70468339eb21afbbaa46aa3d3c42863beb21afbb5527b23ddb9e213cbe46913c8ec7c93da228413c7af6433c0008ba3da228413c2079df398d769e3da228413ceb21afbb8ec7c93ddb9e213c77d3ca3b + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0.08314259, y: 0.006019177, z: 0.0052328445} + m_Extent: {x: 0.017310888, y: 0.0076937275, z: 0.012501083} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &435471056 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 435471057} + - component: {fileID: 435471058} + m_Layer: 0 + m_Name: Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &435471057 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 435471056} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.000000014901161, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1739443087} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &435471058 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 435471056} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e9090ae501ff9cd459bec5271d40249c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &440721509 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 440721511} + - component: {fileID: 440721510} + - component: {fileID: 440721512} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &440721510 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 440721509} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &440721511 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 440721509} + m_LocalRotation: {x: 0.3420201, y: 0, z: 0, w: 0.9396927} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 40, y: 0, z: 0} +--- !u!114 &440721512 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 440721509} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 64af179f0e512471fbf1410d6a6fb13e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &454323621 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 454323622} + - component: {fileID: 454323623} + m_Layer: 0 + m_Name: Collisions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &454323622 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 454323621} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.000000014901161, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1225626587} + m_Father: {fileID: 82561609} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &454323623 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 454323621} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46398bc5d6905ad429a6d2d973afe002, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &493494362 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 493494363} + - component: {fileID: 493494364} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &493494363 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 493494362} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.00000002230704, y: -0.000000019762956, z: 0.000000029802326} + m_LocalScale: {x: 0.99999976, y: 1.0000001, z: 1} + m_Children: + - {fileID: 1705429458} + m_Father: {fileID: 1840527074} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &493494364 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 493494362} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1c0c8ba1123c5f949b20e50d5dd6afe4, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!43 &495216637 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 372 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 64 + localAABB: + m_Center: {x: -0.040897563, y: -0.014163163, z: -0.0001609344} + m_Extent: {x: 0.047184244, y: 0.020383593, z: 0.013966536} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 35002d003f00010008000b000b0008000c0000000b000c001000030013000f000200160000000c00170002000f0017000c000800190017000c001900020017001900120009001a0003000d001b00130003001b000d0009001c00090012001c001b000d001c000a001b001c0007000f001f00130007001f00100013001f000f0016001f000b000400210001000b00210004001200210012001a0021001200040022000e00140023000a00150024001b000a00240013001b00240015001d00240009000d00250020001100250016000600260005001f0026001f00160026001d00150027000b000000280004000b00280000002200280022000400280011000600290006001600290014000e002a001e0014002a00070013002b001d0007002b00130024002b0024001d002b00030010002c00060011002c00180006002c00100018002c00200003002c00110020002c0014001e002d00290016002d001e0029002d00270015002e00220027002e001e0009002f00090025002f00250011002f00110029002f0029001e002f000000170030002200000030002700220030000500100031001f000500310010001f0031001c00120032000a001c00320010000500330006001800330018001000330005002600330026000600330008000100340001002100340021001900340023001400350014002d00350007001d0036001d002700360030001700360027003000360015000a0037001200220037002e001500370022002e0037003200120037000a00320037000d000300380003002000380020000d0038000d002000390025000d0039002000250039001a0009003a0009001e003a002a000e003a001e002a003a00190008003b00080034003b00340019003b00020019003c00190023003c00350002003c00230035003c000f0007003d0017000f003d00070036003d00360017003d00190021003e0021001a003e000e0023003e00230019003e003a000e003e001a003a003e00160002003f002d0016003f00020035003f00 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 64 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 768 + _typelessdata: 9067243bc2d4cb3bf16a493c865da3bd9184a5bcf5b04ebc9234aebd17f2d6bce430623cbe8635bc515980bcc0de10bc0087e53a82fcb23b330e5bbcad038bbcefbb8abc2fde383c72a7acbde6800dbdf16a493c702eb53b2c9108bb2fc8553c865da3bd9184a5bcf16a493c72a7acbd261d01bde87667bc702eb53b2c9108bb330e5bbc10df35bbc2d4cb3bf5b04ebc10df35bbc2d4cb3bf16a493c6c7210bcd8554fbc330e5bbc3c64b4bd17f2d6bcf5b04ebc0087e53a2caf6bbbe430623cbe8635bc515980bcbc980b3c72a7acbde6800dbdf5b04ebc9067243b74b0513be87667bc702eb53b2caf6bbbf16a493c3c64b4bd9a0cfcbcf16a493c7800ce3bfcff1f3bf5b04ebc511aabbd261d01bde430623c0087e53a846d513be430623cde4f9bbdb88706bdeb5f383cdbbcafbd0469c4bc2fc8553cdbbcafbd2628ddbce87667bc702eb53b2caf6bbbf5b04ebcc063a6ba5a1dc0bbe87667bc7800ce3bfcff1f3bf16a493c1cd7b2bd2d3804bdf5b04ebc10df35bb337c11bc2fc8553ceb739cbc015990bc46b83dbcdbbcafbd0469c4bc330e5bbc608a833b82fcb23bf5b04ebc3c64b4bd17f2d6bcf16a493c7800ce3b2c9108bbf5b04ebc511aabbdde650abd330e5bbc72b214bdfaedadbca615483c702eb53bfe8e813bf16a493c9067243bc2d4cb3bf5b04ebcdbbcafbdde650abdf16a493c3c64b4bd9a0cfcbcf5b04ebc7800ce3b2c9108bbf16a493cde4f9bbdb88706bdefa53dbc1cd7b2bd2d3804bdf16a493c702eb53bfe8e813bf5b04ebcdbbcafbdde650abdf5b04ebc608a833b82fcb23bf16a493cd3d740bc2d8a73bc0d1c3b3c608a833b5047aebae87667bceb739cbc015990bc4272383c01a3abbd6fb7b9bc1b5c42bc1cd7b2bdeadef5bc2fc8553c702eb53bfcff1f3b2fc8553c702eb53bfcff1f3b330e5bbc6dd340bc488a73bcd16340bc2d851abdca7db3bccba34cbc1cd7b2bdeadef5bc330e5bbc01a3abbd6fb7b9bc17163d3c1cd7b2bd17f2d6bc2fc8553c9067243ba8413abbe430623c1cd7b2bd66c4d0bc330e5bbc9234aebdeadef5bce430623c + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: -0.040897563, y: -0.014163163, z: -0.0001609344} + m_Extent: {x: 0.047184244, y: 0.020383593, z: 0.013966536} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &501508468 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 501508469} + - component: {fileID: 501508470} + m_Layer: 0 + m_Name: Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &501508469 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 501508468} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1.1862517e-11, y: 0, z: -0.000000014901158} + m_LocalScale: {x: 0.99999946, y: 1.0000006, z: 1} + m_Children: + - {fileID: 1584387102} + m_Father: {fileID: 1433821736} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &501508470 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 501508468} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e9090ae501ff9cd459bec5271d40249c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &509888477 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 509888478} + - component: {fileID: 509888479} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &509888478 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 509888477} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.000000022307031, y: -0.00000001976297, z: -0.00000002980233} + m_LocalScale: {x: 0.99999976, y: 1.0000001, z: 1} + m_Children: + - {fileID: 534040879} + m_Father: {fileID: 163649341} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &509888479 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 509888477} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b2685e7e7719cd43814f41f35664c0b, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!43 &511517856 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 96 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 18 + localAABB: + m_Center: {x: -0.05630707, y: 0.0101638585, z: 0.02098284} + m_Extent: {x: 0.008654594, y: 0.011836151, z: 0.023674618} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 0e000b001100010002000300020001000400010003000700040001000800050004000800030002000900020004000900060003000900040006000900010007000a00070005000a00080001000a00030006000b00060004000b00070003000c00000004000d00040005000d00050007000d0003000b000e000c0003000e00050008000f000a0005000f0008000a000f0007000c0010000d000700100000000d0010000e00000010000c000e0010000400000011000b000400110000000e001100 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 18 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 216 + _typelessdata: 6dd25abd3958af3c00441f3d9f0a85bdd030dbbac0a8c4bad08f6abdd030dbbac0a8c4ba3e2f43bdd030dbbabdea363db9c36abd5d39b43c956830bb9c1881bd3958af3cec13a13c3e2f43bd3958af3cfa88ff3cc0507abdd030dbbafa44d03c9f0a85bd3958af3cc0a8c4ba3e2f43bdd030dbbafa88ff3c9f0a85bdd030dbbadb16443c3e2f43bd3958af3c7e082f3de5b262bdd030dbba7e66173d487072bd3958af3c7cc4ef3c7d114bbd0552863bbdea363d9f0a85bd20949f3cdb16443ce5b262bdc4d48f3c7e66173d7d114bbd3958af3c7e082f3d + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: -0.05630707, y: 0.0101638585, z: 0.02098284} + m_Extent: {x: 0.008654594, y: 0.011836151, z: 0.023674618} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &516410954 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 516410955} + - component: {fileID: 516410956} + m_Layer: 0 + m_Name: Box + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &516410955 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 516410954} + m_LocalRotation: {x: 0.000000042146823, y: -1.776356e-15, z: -1.4210848e-14, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2063951599} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &516410956 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 516410954} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!1001 &534040878 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 509888478} + m_Modifications: + - target: {fileID: 1038137129100238929, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 3b0e2ceb0b7d245f185a3ccd43540485, type: 2} + - target: {fileID: 6266980531744727053, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_Name + value: robotiq_arg2f_140_outer_finger + objectReference: {fileID: 0} + - target: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_LocalScale.x + value: 0.9999999 + objectReference: {fileID: 0} + - target: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_LocalScale.y + value: 1.0000001 + objectReference: {fileID: 0} + - target: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_LocalPosition.x + value: -0.000000011153517 + objectReference: {fileID: 0} + - target: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_LocalPosition.y + value: -0.000000009881481 + objectReference: {fileID: 0} + - target: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_LocalPosition.z + value: -0.000000014901163 + objectReference: {fileID: 0} + - target: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: b028b05c5eb474e149455232fa3030d0, type: 3} +--- !u!4 &534040879 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + m_PrefabInstance: {fileID: 534040878} + m_PrefabAsset: {fileID: 0} +--- !u!1 &582384525 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 582384526} + - component: {fileID: 582384530} + - component: {fileID: 582384529} + - component: {fileID: 582384528} + - component: {fileID: 582384527} + m_Layer: 0 + m_Name: robotiq_arg2f_base_link + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &582384526 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 582384525} + m_LocalRotation: {x: 0, y: -0.7068252, z: 0, w: 0.7073882} + m_LocalPosition: {x: 0.000000029802326, y: -3.5527137e-15, z: 0} + m_LocalScale: {x: 0.9999999, y: 1.0000001, z: 1} + m_Children: + - {fileID: 685364116} + - {fileID: 712208461} + - {fileID: 1794209838} + - {fileID: 1433821736} + - {fileID: 1248956524} + - {fileID: 1062953765} + m_Father: {fileID: 1739443087} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &582384527 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 582384525} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 074632cab556f5b408839af8574308df, type: 3} + m_Name: + m_EditorClassIdentifier: + xAxis: 0 + jointName: measurement_tool_joint + EffortLimit: 1000 + VelocityLimit: 1000 +--- !u!114 &582384528 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 582384525} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7631001c063f69d4495bca90731abab2, type: 3} + m_Name: + m_EditorClassIdentifier: + displayInertiaGizmo: 0 + useUrdfData: 1 + centerOfMass: {x: 0.0000046583, y: 0.03145, z: 0.00000008625} + inertiaTensor: {x: 0.00013477998, y: 0.00017832004, z: 0.00020005001} + inertiaTensorRotation: {x: 0.7073861, y: -0.7068274, z: -0.0000015770377, w: -0.0000015758025} + inertialAxisRotation: {x: 0, y: 0, z: 0, w: 1} +--- !u!171741748 &582384529 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 582384525} + m_Enabled: 1 + m_Mass: 0.22652 + m_ParentAnchorPosition: {x: 0.00000004470349, y: -7.1054274e-15, z: 0} + m_ParentAnchorRotation: {x: -0.4998011, y: -0.4998011, z: 0.50019914, w: 0.50019914} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068} + m_ComputeParentAnchor: 1 + m_ArticulationJointType: 0 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 2 + m_SwingZ: 2 + m_Twist: 2 + m_XDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_YDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_ZDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_Immovable: 0 + m_UseGravity: 1 +--- !u!114 &582384530 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 582384525} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fba5fd74d37a6cf4284698624eb8f6aa, type: 3} + m_Name: + m_EditorClassIdentifier: + IsBaseLink: 0 +--- !u!1 &584313691 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 584313692} + - component: {fileID: 584313693} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &584313692 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 584313691} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.372505e-11, y: -7.1054206e-15, z: -0.000000029802322} + m_LocalScale: {x: 0.99999887, y: 1.0000011, z: 1} + m_Children: + - {fileID: 1260708469} + m_Father: {fileID: 1093057478} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &584313693 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 584313691} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b2685e7e7719cd43814f41f35664c0b, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!1 &587358104 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 587358105} + - component: {fileID: 587358106} + m_Layer: 0 + m_Name: Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &587358105 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 587358104} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1000746317} + m_Father: {fileID: 150120929} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &587358106 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 587358104} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e9090ae501ff9cd459bec5271d40249c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &589410763 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 589410764} + - component: {fileID: 589410765} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &589410764 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 589410763} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.00000002230704, y: -0.000000019762956, z: 0.000000029802326} + m_LocalScale: {x: 0.99999976, y: 1.0000001, z: 1} + m_Children: + - {fileID: 2023847683} + m_Father: {fileID: 875612092} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &589410765 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 589410763} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b2685e7e7719cd43814f41f35664c0b, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!1001 &628586285 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 323232828} + m_Modifications: + - target: {fileID: -8679921383154817045, guid: 91b1d303121d84f5791b4e090d012a8d, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 91b1d303121d84f5791b4e090d012a8d, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 91b1d303121d84f5791b4e090d012a8d, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 91b1d303121d84f5791b4e090d012a8d, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 91b1d303121d84f5791b4e090d012a8d, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 91b1d303121d84f5791b4e090d012a8d, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 91b1d303121d84f5791b4e090d012a8d, type: 3} + propertyPath: m_LocalRotation.y + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 91b1d303121d84f5791b4e090d012a8d, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 91b1d303121d84f5791b4e090d012a8d, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 91b1d303121d84f5791b4e090d012a8d, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 91b1d303121d84f5791b4e090d012a8d, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -7264643304161535556, guid: 91b1d303121d84f5791b4e090d012a8d, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: -4286396916692950121, guid: 91b1d303121d84f5791b4e090d012a8d, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: -1663525628340895374, guid: 91b1d303121d84f5791b4e090d012a8d, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: 55291342286754144, guid: 91b1d303121d84f5791b4e090d012a8d, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: 919132149155446097, guid: 91b1d303121d84f5791b4e090d012a8d, type: 3} + propertyPath: m_Name + value: forearm + objectReference: {fileID: 0} + - target: {fileID: 7374791279145423755, guid: 91b1d303121d84f5791b4e090d012a8d, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: 7850734403127241072, guid: 91b1d303121d84f5791b4e090d012a8d, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 91b1d303121d84f5791b4e090d012a8d, type: 3} +--- !u!4 &628586286 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: 91b1d303121d84f5791b4e090d012a8d, type: 3} + m_PrefabInstance: {fileID: 628586285} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &635677482 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1519062818} + m_Modifications: + - target: {fileID: 1015426639706503529, guid: 1b023347ed79542f6805f6519b3f5e4f, type: 3} + propertyPath: m_Name + value: forearm + objectReference: {fileID: 0} + - target: {fileID: 9042338348744632580, guid: 1b023347ed79542f6805f6519b3f5e4f, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9042338348744632580, guid: 1b023347ed79542f6805f6519b3f5e4f, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9042338348744632580, guid: 1b023347ed79542f6805f6519b3f5e4f, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9042338348744632580, guid: 1b023347ed79542f6805f6519b3f5e4f, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9042338348744632580, guid: 1b023347ed79542f6805f6519b3f5e4f, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 9042338348744632580, guid: 1b023347ed79542f6805f6519b3f5e4f, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 9042338348744632580, guid: 1b023347ed79542f6805f6519b3f5e4f, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 9042338348744632580, guid: 1b023347ed79542f6805f6519b3f5e4f, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 9042338348744632580, guid: 1b023347ed79542f6805f6519b3f5e4f, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9042338348744632580, guid: 1b023347ed79542f6805f6519b3f5e4f, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9042338348744632580, guid: 1b023347ed79542f6805f6519b3f5e4f, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 5313235274031828369, guid: 1b023347ed79542f6805f6519b3f5e4f, type: 3} + - {fileID: 6831300931613783701, guid: 1b023347ed79542f6805f6519b3f5e4f, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: 1b023347ed79542f6805f6519b3f5e4f, type: 3} +--- !u!4 &635677483 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 9042338348744632580, guid: 1b023347ed79542f6805f6519b3f5e4f, type: 3} + m_PrefabInstance: {fileID: 635677482} + m_PrefabAsset: {fileID: 0} +--- !u!1 &635677484 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 7916335756539687502, guid: 1b023347ed79542f6805f6519b3f5e4f, type: 3} + m_PrefabInstance: {fileID: 635677482} + m_PrefabAsset: {fileID: 0} +--- !u!64 &635677485 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 635677484} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 10283430} +--- !u!64 &635677486 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 635677484} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 1997017431} +--- !u!64 &635677487 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 635677484} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 320211345} +--- !u!1 &638849419 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 638849420} + - component: {fileID: 638849421} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &638849420 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 638849419} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2023967686} + m_Father: {fileID: 642810175} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &638849421 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 638849419} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1c0c8ba1123c5f949b20e50d5dd6afe4, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!1 &642810174 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 642810175} + - component: {fileID: 642810176} + m_Layer: 0 + m_Name: Collisions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &642810175 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 642810174} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 638849420} + m_Father: {fileID: 1002404875} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &642810176 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 642810174} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46398bc5d6905ad429a6d2d973afe002, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &651086951 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 651086952} + - component: {fileID: 651086953} + m_Layer: 0 + m_Name: Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &651086952 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 651086951} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 130917711} + m_Father: {fileID: 1497065043} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &651086953 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 651086951} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e9090ae501ff9cd459bec5271d40249c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &662902375 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 965948704} + m_Modifications: + - target: {fileID: 2348501893039603956, guid: b0ab4ee1d5e3a4709b5702080cbb4944, type: 3} + propertyPath: m_Name + value: wrist2 + objectReference: {fileID: 0} + - target: {fileID: 5616235991481001243, guid: b0ab4ee1d5e3a4709b5702080cbb4944, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5616235991481001243, guid: b0ab4ee1d5e3a4709b5702080cbb4944, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5616235991481001243, guid: b0ab4ee1d5e3a4709b5702080cbb4944, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5616235991481001243, guid: b0ab4ee1d5e3a4709b5702080cbb4944, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5616235991481001243, guid: b0ab4ee1d5e3a4709b5702080cbb4944, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5616235991481001243, guid: b0ab4ee1d5e3a4709b5702080cbb4944, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5616235991481001243, guid: b0ab4ee1d5e3a4709b5702080cbb4944, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5616235991481001243, guid: b0ab4ee1d5e3a4709b5702080cbb4944, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5616235991481001243, guid: b0ab4ee1d5e3a4709b5702080cbb4944, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5616235991481001243, guid: b0ab4ee1d5e3a4709b5702080cbb4944, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5616235991481001243, guid: b0ab4ee1d5e3a4709b5702080cbb4944, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 3945955138766692817, guid: b0ab4ee1d5e3a4709b5702080cbb4944, type: 3} + - {fileID: 1512494304751361501, guid: b0ab4ee1d5e3a4709b5702080cbb4944, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: b0ab4ee1d5e3a4709b5702080cbb4944, type: 3} +--- !u!4 &662902376 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5616235991481001243, guid: b0ab4ee1d5e3a4709b5702080cbb4944, type: 3} + m_PrefabInstance: {fileID: 662902375} + m_PrefabAsset: {fileID: 0} +--- !u!1 &662902377 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5946560709830538545, guid: b0ab4ee1d5e3a4709b5702080cbb4944, type: 3} + m_PrefabInstance: {fileID: 662902375} + m_PrefabAsset: {fileID: 0} +--- !u!64 &662902378 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 662902377} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 1083456429} +--- !u!1 &677956707 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 677956708} + - component: {fileID: 677956709} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &677956708 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 677956707} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.000000022307031, y: -0.00000001976297, z: -0.00000002980233} + m_LocalScale: {x: 0.99999976, y: 1.0000001, z: 1} + m_Children: + - {fileID: 1259912827} + m_Father: {fileID: 717445035} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &677956709 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 677956707} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1c0c8ba1123c5f949b20e50d5dd6afe4, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!1 &685364115 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 685364116} + - component: {fileID: 685364117} + m_Layer: 0 + m_Name: Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &685364116 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 685364115} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000014901165, y: -1.7763566e-15, z: 0} + m_LocalScale: {x: 0.99999976, y: 1.0000001, z: 1.0000001} + m_Children: + - {fileID: 1114402592} + m_Father: {fileID: 582384526} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &685364117 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 685364115} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e9090ae501ff9cd459bec5271d40249c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!43 &705056917 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 84 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 16 + localAABB: + m_Center: {x: 0.058925986, y: 0.010163826, z: -0.014001463} + m_Extent: {x: 0.0069044027, y: 0.011836118, z: 0.013146333} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 0c000d000f00020001000300030004000800060000000800010002000900060001000900050006000900030001000a00040003000a00010006000a00080004000a00020005000b00090002000b00050009000b00070003000c00030008000c00080000000c00000006000d00060005000d000c0000000d00060008000e000a0006000e0008000a000e00020003000f00050002000f00030007000f0007000c000f000d0005000f00 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 16 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 192 + _typelessdata: 15d2863d2ca5213c7148eebbe080563dd030dbbae61bd9bc9914553d2b39b43c0e65debc9514553d3a39b43cc72a60bae080563d00438439e0a8c4baa2e27d3d3958af3cdc96b9bc5ae1823dd030dbba4e4f8abc5ae1823d3958af3ce0a8c4ba15d2863d00438439e0a8c4ba2d01763dd030dbbae61bd9bce080563dd030dbba7148eebb2d01763d3958af3ce61bd9bc15d2863dc4d48f3ce0a8c4ba5ae1823d20949f3c4e4f8abc5ae1823dd030dbba7148eebb5ae1823d3958af3c931975bc + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0.058925986, y: 0.010163826, z: -0.014001463} + m_Extent: {x: 0.0069044027, y: 0.011836118, z: 0.013146333} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!43 &705943090 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 228 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 40 + localAABB: + m_Center: {x: -0.018881917, y: -0.008967342, z: -0.00009733625} + m_Extent: {x: 0.025139496, y: 0.015205326, z: 0.007874187} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 0a001f002700060003000700020006000700030006000900020007000b00040000000c00060004000c0001000b000d000b0007000d00070003000e000a000e000f00030009000f000e0003000f001000050011000900060014000600020015000400060015000e000a0016001000080016000a001000160008001200160012000e0016000000040017000800100017000b0001001800010013001800130004001800110005001900000011001900120008001a00130012001a00080017001a0001000e001b000e0012001b00130001001b00120013001b0001000d001c000d0007001c000e0001001c0002000b001d000f0009001e00190005001e00090019001e000a000f001f000c000000200006000c0020000900140020001400060020001900090020000000190020001100000021001000110021000000170021001700100021000b00180022001800040022001d000b00220007000e0023001c00070023000e001c00230004001300240017000400240013001a0024001a001700240015000200250004001500250002001d0025002200040025001d00220025000f001e0026001e000500260005001f0026001f000f00260005001000270010000a0027001f0005002700 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 40 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 480 + _typelessdata: 08581fbbbda8b8bcfe9a02bce06cfa3afe67cc3b2e00ed3b3b582dbd953353bcc82adcbbb48731bdbaf8bebc9467df3be06cfa3a508eba3bfe9a02bcc092b0ba9038b4bc2e00ed3bcc4f34bd3649c2bcb92cecbb3b582dbd953353bcc0c9d53b600ccd3bc0f9f73a3661f3bb96e496bbc205c6bc2e00ed3b205ba93b4ca420bbf4d4fe3ba5d54dbbc395a83b861ce2bbddf547bc568fc1bcfe9a02bca5d54dbbc395a83b7ebbdb3b6cac973b14b3663bf4d4fe3bf80b85bb291fbdbcf4d4fe3baa35b63b92c409bb08d2ecbbc092b0ba9038b4bc3661f3bbc033bb3b14b3663b2e00ed3b58f6673b508eba3b3661f3bbd373a6bbe5fcc1bc9099ebbb0ac1d7bc5225d3bb1c4ff3bb600ccd3bc0f9f73a2e00ed3bc033bb3bc0f9f73afe9a02bce06cfa3afe67cc3b3661f3bb08581fbb291fbdbc3661f3bbc033bb3b14b3663b3661f3bb58f6673b508eba3b2e00ed3b1eb617bcf761c93abc76ea3bb122aebce52e64bbaa37f0bb08581fbb291fbdbc2e00ed3b003787b9ee9790bcf4d4fe3b96e496bb568fc1bcfe9a02bc40f5f7ba9038b4bcfe9a02bca7ad76bb6686943bd4c8f0bbd6d926bc3c9f213a218eec3b6cac973b3833853bfe9a02bce332cfbc0db0b2bbfce8f1bb08581fbb9038b4bcf4d4fe3bccd3853b4a3abbbbf4d4fe3b + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: -0.018881917, y: -0.008967342, z: -0.00009733625} + m_Extent: {x: 0.025139496, y: 0.015205326, z: 0.007874187} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &712208460 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 712208461} + - component: {fileID: 712208462} + m_Layer: 0 + m_Name: Collisions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &712208461 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 712208460} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000014901165, y: -1.7763566e-15, z: 0} + m_LocalScale: {x: 0.99999976, y: 1.0000001, z: 1.0000001} + m_Children: + - {fileID: 1182380623} + m_Father: {fileID: 582384526} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &712208462 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 712208460} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46398bc5d6905ad429a6d2d973afe002, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &717445034 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 717445035} + - component: {fileID: 717445036} + m_Layer: 0 + m_Name: Collisions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &717445035 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 717445034} + m_LocalRotation: {x: -0, y: -0, z: -2.3161052e-23, w: 1} + m_LocalPosition: {x: -0.000000011153515, y: -0.0000000098814885, z: -0.000000014901163} + m_LocalScale: {x: 1, y: 1.0000002, z: 1} + m_Children: + - {fileID: 677956708} + m_Father: {fileID: 1240013164} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &717445036 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 717445034} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46398bc5d6905ad429a6d2d973afe002, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &728016272 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 728016273} + - component: {fileID: 728016274} + m_Layer: 0 + m_Name: Collisions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &728016273 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 728016272} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1170705981} + m_Father: {fileID: 193008323} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &728016274 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 728016272} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46398bc5d6905ad429a6d2d973afe002, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &745613284 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 745613285} + - component: {fileID: 745613286} + m_Layer: 0 + m_Name: world + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &745613285 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 745613284} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1372997295} + - {fileID: 2025211109} + - {fileID: 859020023} + m_Father: {fileID: 294812823} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &745613286 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 745613284} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fba5fd74d37a6cf4284698624eb8f6aa, type: 3} + m_Name: + m_EditorClassIdentifier: + IsBaseLink: 1 +--- !u!1 &769161764 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 769161765} + - component: {fileID: 769161766} + m_Layer: 0 + m_Name: Box + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &769161765 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 769161764} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.000000014901161, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1225626587} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &769161766 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 769161764} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!1 &780275802 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 780275803} + - component: {fileID: 780275804} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &780275803 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 780275802} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.372505e-11, y: -7.1054206e-15, z: -0.000000029802322} + m_LocalScale: {x: 0.99999887, y: 1.0000011, z: 1} + m_Children: + - {fileID: 1173739362} + m_Father: {fileID: 964811038} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &780275804 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 780275802} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1c0c8ba1123c5f949b20e50d5dd6afe4, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!1 &783648245 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 783648247} + - component: {fileID: 783648246} + m_Layer: 0 + m_Name: Simulation Scenario + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &783648246 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 783648245} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d50076aff0af4515b4422166496fdd5e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Randomizers: + - id: 0 + - id: 1 + - id: 2 + quitOnComplete: 1 + constants: + randomSeed: 539662031 + totalIterations: 100 + instanceCount: 1 + instanceIndex: 0 + framesPerIteration: 1 + references: + version: 1 + 00000000: + type: {class: RobotArmObjectPositionRandomizer, ns: , asm: Assembly-CSharp} + data: + collapsed: 0 + k__BackingField: 1 + plane: {fileID: 5666230719848660714} + maxPlacementTries: 100 + robotBase: {fileID: 1709504114} + minRobotReachability: 0.2 + maxRobotReachability: 0.4 + random: + collapsed: 0 + value: + id: 3 + 00000001: + type: {class: YRotationRandomizer, ns: , asm: Assembly-CSharp} + data: + collapsed: 0 + k__BackingField: 1 + random: + collapsed: 0 + value: + id: 4 + 00000002: + type: {class: LightRandomizer, ns: , asm: Assembly-CSharp} + data: + collapsed: 0 + k__BackingField: 1 + lightIntensityParameter: + collapsed: 0 + value: + id: 5 + rotationX: + collapsed: 0 + value: + id: 6 + rotationY: + collapsed: 0 + value: + id: 7 + lightColorParameter: + collapsed: 0 + red: + id: 8 + green: + id: 9 + blue: + id: 10 + alpha: + id: 11 + 00000003: + type: {class: UniformSampler, ns: UnityEngine.Perception.Randomization.Samplers, asm: Unity.Perception.Runtime} + data: + range: + minimum: 0 + maximum: 1 + 00000004: + type: {class: UniformSampler, ns: UnityEngine.Perception.Randomization.Samplers, asm: Unity.Perception.Runtime} + data: + range: + minimum: 0 + maximum: 1 + 00000005: + type: {class: UniformSampler, ns: UnityEngine.Perception.Randomization.Samplers, asm: Unity.Perception.Runtime} + data: + range: + minimum: 0.9 + maximum: 1.1 + 00000006: + type: {class: UniformSampler, ns: UnityEngine.Perception.Randomization.Samplers, asm: Unity.Perception.Runtime} + data: + range: + minimum: 40 + maximum: 80 + 00000007: + type: {class: UniformSampler, ns: UnityEngine.Perception.Randomization.Samplers, asm: Unity.Perception.Runtime} + data: + range: + minimum: -180 + maximum: 180 + 00000008: + type: {class: UniformSampler, ns: UnityEngine.Perception.Randomization.Samplers, asm: Unity.Perception.Runtime} + data: + range: + minimum: 0.5 + maximum: 1 + 00000009: + type: {class: UniformSampler, ns: UnityEngine.Perception.Randomization.Samplers, asm: Unity.Perception.Runtime} + data: + range: + minimum: 0.5 + maximum: 1 + 0000000A: + type: {class: UniformSampler, ns: UnityEngine.Perception.Randomization.Samplers, asm: Unity.Perception.Runtime} + data: + range: + minimum: 0.5 + maximum: 1 + 0000000B: + type: {class: ConstantSampler, ns: UnityEngine.Perception.Randomization.Samplers, asm: Unity.Perception.Runtime} + data: + value: 1 +--- !u!4 &783648247 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 783648245} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!43 &787515908 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 174 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 31 + localAABB: + m_Center: {x: 0.029286502, y: 0.010163832, z: -0.045242958} + m_Extent: {x: 0.030774912, y: 0.011836125, z: 0.019730687} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 05001a001e00010002000300020001000500050001000700020005000800010003000a00070001000a00040008000b00080005000b00060009000c00030009000d00090006000d000500070010000b000500110005000c0011000f00000012000c000f0012000000100012000e00070013000800040014000400090014000900080014000a000300150003000d0015000d000a00150003000200160002000900160009000300160009000400170004000b0017000c00090017000b001100170011000c0017000200080018000900020018000800090018000d00060019000a000d00190006001300190013000a00190000000f001a00100000001a00050010001a0007000e001b00100007001b000e0012001b00120010001b0006000c001c000c0012001c0012000e001c00130006001c000e0013001c0007000a001d000a0013001d00130007001d000c0005001e000f000c001e001a000f001e00 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 31 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 372 + _typelessdata: 5b1d6e3d20949f3c7a3504bdc016c3bad030dbbae71085bdc016c3bad030dbba309b6abdc016c3ba3958af3ce71085bd6c3c003d2139b43cee5c01bdf502763dd030dbba0821d9bcb2b3073d3958af3c309b6abd54db3e3dd030dbbade3643bdfc55cb3bd030dbba29593bbd4db67e3a4139b43c75e44bbdae3b443cd030dbbae71085bdfb920f3dd030dbbaa6a7f8bcb612533d2239b43c1bffd0bcc224a13c3958af3c1a1e81bd9cba463dc4d48f3c29593bbd5b1d6e3d3958af3c0821d9bc5b1d6e3dd030dbba7a3504bde6994e3dd030dbba0821d9bc78585e3d3958af3c7ed61bbd4472173dc4d48f3c7cbd62bdfc55cb3b3958af3c29593bbdae3b443c20949f3ce71085bdc016c3ba3958af3c309b6abd0acb103d3239b43c3126f2bcd0c21a3bd030dbba92144bbd1b6dd03c20949f3c7f5e7abdf502763dc4d48f3c57e4e8bc78585e3dd030dbba7ed61bbdde571f3d3958af3cd4db5abdb9f6d53c3a13bb3951496fbdf502763dc4d48f3c0821d9bc + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0.029286502, y: 0.010163832, z: -0.045242958} + m_Extent: {x: 0.030774912, y: 0.011836125, z: 0.019730687} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &819291650 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 819291651} + - component: {fileID: 819291652} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &819291651 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 819291650} + m_LocalRotation: {x: -0.000000042146823, y: 1.776356e-15, z: 1.4210848e-14, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.065, y: 0.0075, z: 0.027} + m_Children: + - {fileID: 962218669} + m_Father: {fileID: 1899499214} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &819291652 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 819291650} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b2685e7e7719cd43814f41f35664c0b, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 0 +--- !u!1001 &835330258 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1172479706} + m_Modifications: + - target: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_LocalScale.x + value: 0.9999999 + objectReference: {fileID: 0} + - target: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_LocalScale.y + value: 1.0000001 + objectReference: {fileID: 0} + - target: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_LocalPosition.x + value: -0.000000011175883 + objectReference: {fileID: 0} + - target: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_LocalPosition.y + value: -0.000000009313218 + objectReference: {fileID: 0} + - target: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_LocalPosition.z + value: 0.000000014901154 + objectReference: {fileID: 0} + - target: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8781155580949660236, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_Name + value: robotiq_arg2f_140_inner_finger + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 3528148055771103780, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + - {fileID: 643539555478099317, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} +--- !u!4 &835330259 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + m_PrefabInstance: {fileID: 835330258} + m_PrefabAsset: {fileID: 0} +--- !u!1 &835330260 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 8155506598159987073, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + m_PrefabInstance: {fileID: 835330258} + m_PrefabAsset: {fileID: 0} +--- !u!64 &835330261 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 835330260} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 705943090} +--- !u!1 &859020022 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 859020023} + - component: {fileID: 859020027} + - component: {fileID: 859020026} + - component: {fileID: 859020025} + - component: {fileID: 859020024} + m_Layer: 0 + m_Name: base_link + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &859020023 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 859020022} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.77, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1904475132} + - {fileID: 1922870298} + - {fileID: 150120929} + - {fileID: 1709504115} + m_Father: {fileID: 745613285} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &859020024 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 859020022} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 074632cab556f5b408839af8574308df, type: 3} + m_Name: + m_EditorClassIdentifier: + xAxis: 0 + jointName: world_joint + EffortLimit: 1000 + VelocityLimit: 1000 +--- !u!114 &859020025 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 859020022} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7631001c063f69d4495bca90731abab2, type: 3} + m_Name: + m_EditorClassIdentifier: + displayInertiaGizmo: 0 + useUrdfData: 1 + centerOfMass: {x: -0, y: 0, z: 0} + inertiaTensor: {x: 0.0030531655, y: 0.005625, z: 0.0030531655} + inertiaTensorRotation: {x: 0, y: 0, z: 0, w: 1} + inertialAxisRotation: {x: 0, y: 0, z: 0, w: 1} +--- !u!171741748 &859020026 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 859020022} + m_Enabled: 1 + m_Mass: 2 + m_ParentAnchorPosition: {x: 0, y: 0, z: 0} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068} + m_ComputeParentAnchor: 1 + m_ArticulationJointType: 0 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 2 + m_SwingZ: 2 + m_Twist: 2 + m_XDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_YDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_ZDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_Immovable: 1 + m_UseGravity: 1 +--- !u!114 &859020027 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 859020022} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fba5fd74d37a6cf4284698624eb8f6aa, type: 3} + m_Name: + m_EditorClassIdentifier: + IsBaseLink: 0 +--- !u!1 &860929726 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 860929727} + - component: {fileID: 860929728} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &860929727 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 860929726} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2028491882} + m_Father: {fileID: 1904475132} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &860929728 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 860929726} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b2685e7e7719cd43814f41f35664c0b, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!1 &875612091 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 875612092} + - component: {fileID: 875612093} + m_Layer: 0 + m_Name: Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &875612092 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 875612091} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.000000011153518, y: -0.00000000988148, z: 0.000000014901161} + m_LocalScale: {x: 0.99999976, y: 1.0000002, z: 1} + m_Children: + - {fileID: 589410764} + m_Father: {fileID: 1557562617} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &875612093 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 875612091} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e9090ae501ff9cd459bec5271d40249c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!43 &907353447 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 372 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 64 + localAABB: + m_Center: {x: -0.004223088, y: -0.0036313087, z: 0.0002616793} + m_Extent: {x: 0.04875973, y: 0.06167841, z: 0.04485763} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 2b002d003f00010002000500010005000a0007000d001700050002001800080015001b00160008001b0001000a001c000a0004001e0004000f001e0014000a001e000f001d001e000a0005001f00050019001f0003000d0020000d000c0020000900100020000c00140020000c000d00220004000a00230011001a0023000d000300240017000d0024000e00170024000300210024000300200025002000100025001600000026001600260027001d000f00270009001d0027002600090027000000160028001b000e00280016001b0028002100000028000e00240028002400210028000800160029001900080029001a000b00290016001a0029000b001f0029001f0019002900000021002a00210003002a00260000002a00120026002a00150007002b001b0015002b00100009002c00250010002c00120025002c00090026002c00260012002c00070017002d0017000e002d002b0007002d00180002002e0014000c002f000c001c002f001900050030000800190030000a001f0031001f000b00310023000a0031001100230031000b001a0032001a001100320031000b0032001100310032001d000600330014001e0033001e001d0033000200010034000d001300340001002200340022000d0034002e000200340013002e00340013000d0035000d00180035002e001300350018002e00350004002300360023001a0036000d000700370018000d00370001001c0038001c000c0038002200010038000c002200380006001d0039002000140039003300060039001400330039001d0009003a00090020003a0039001d003a00200039003a000a0014003b001c000a003b0014002f003b002f001c003b000f0004003c001a0016003c00160027003c0027000f003c00040036003c0036001a003c00030025003d00250012003d002a0003003d0012002a003d00070015003e00150008003e00050018003e00300005003e00080030003e00370007003e00180037003e000e001b003f001b002b003f002d000e003f00 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 64 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 768 + _typelessdata: 83ff253df3ac343d41d73b3c96a956bd0a4031bde9c14fbc8ea255bda56b30bd85c2573c0d6c363dcdf383bd6d27c13b6ab292bc94ba553ddcab2ebd477558bd84914b3cb237313d9eb96b3cdf3183bd3b862ebd907f4d3c1d6083bd7006313d5c4ed13a80b05d3da6e9283dc2660e3d2dbf3d3d7471edbca88658bdfc71a23b3eaa36bdb03c31bdccc26d3dac37243cbb510bbdf4e382bd018cf1bc7c5780bc1ac185bd3dad2c3d8310063df0e1a03c7ee8013de6fef33b94ba553ddcab2ebd9eb8163de44283bde6b0d3bc1e0458bde34d253dbcb1a5bc0b7f343d636e833c080132bc402420bd023081bd9a89b63cc064c8bb276383bdf37436bd6546523b159bfe3c2bb5383dc26d063d65c7553d1f18923c5185003daddc83bd8fb5033d328b56bda15a5fbc27862f3de59cf2bc3db3653d1ef5083ddc4a09bdccc26d3d5073cdbc35ea9c3cd6b74d3dbaf3203d78a057bdb9c09dbc429326bd35dcac3cfecb3d3d54ac26bd92b9513bf9fd2c3d5d3936bd820459bd0b3d0f3d1090e83cae07023df82185bd4cc802bdef86333d8a9c823ce8373a3c23af30bd954f82bdf1ad4fbcb36958bd80f8d03c8ceb17bdafe2263d47d883bde6d99b3cf72b2e3dd19a83bd867b70bc2c631e3deac1453d53899dbc35ea9c3c94ba553d42ad16bda7e21c3dd2bd143d9f1fb83cdc4a09bdccc26d3d2e01d23cfb11363da4190f3def24d0ba47c66a3c77c2de3c0a38303dd4d2243d3a99673c40e8b3bc628eb23ce5f482bd5f2a213dbda454bdef17e7bc6dc80f3d5ecf9cbcb1ec82bdb78a26bdf7725ebc89934b3dc63e293da5cd58bdb467353dcc6cfe3bb03c31bdccc26d3d64421bbc7933e33b4e4283bdae4336bd2e1630bd11db81bddafd573c2911e6bce01d81bd7dc90f3d1196e2bc3db3653db8ad0ebdea8b5dbc438982bda8d12f3d5e4756bde2a012bd0bc7e0bc6b9ab43c6a2084bdad7520bdc2d8de3cb115b03c036b16bdf51958bd635cccbbe64536bd96ab82bc0fc0653dcaac1ebdf8a9353d627c83bdfc8bebbba7881cbbc20d073d06cf383dfd2ecf3cf001ce3c9e67183d + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: -0.004223088, y: -0.0036313087, z: 0.0002616793} + m_Extent: {x: 0.04875973, y: 0.06167841, z: 0.04485763} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!43 &915062713 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 198 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 35 + localAABB: + m_Center: {x: -0.049993217, y: -0.0011082233, z: 0.000086955726} + m_Extent: {x: 0.05639851, y: 0.0070947492, z: 0.020054765} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 060019002200030000000600030007000800060009000a00070004000c00040008000c00080007000c00080001000e0000000b000e000b0008000e00000003000f000b0000000f000600000011000900060011000a000900110005000d00120003000800130008000b0013000b000f0013000600050014000200060014001200020014000500120014000300060016000700030016000400070016000600100016001500040016001000150016000f000300170003001300170013000f001700060002001800100006001800020012001800150010001800120015001800010008001a000d0001001a0001000a001b000e0001001b000a0011001b0011000e001b000a0001001c0001000d001c00050019001c0000000e001d00110000001d000e0011001d00080004001e0012000d001e00040015001e00150012001e000d001a001e0006000a001f00190006001f000a001c001f001c0019001f000d000500200005001c0020001c000d0020001a000800210008001e0021001e001a002100050006002200190005002200 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 35 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 420 + _typelessdata: 80e3d13babef113b4000a53c7aea84bce0cbab3b6a889bbc06e8d5bd009e023a9c559f3c184badbb7425e4bb4000a53cefbbd4bd7425e4bb848a59bc0c0ccebd5871703b276942bc679dc3bdf41e9b3b4000a53c872dcbbdc36506bcc1909b3c184badbb7425e4bb8893a3bc519e30ba9f2ac43bbadc9b3c519e30ba9f2ac43b02709abc50c0b63b63486dbb8893a3bc37efbfbdc96604bcfd6a49bcec73d6bdc876b63a848a59bc50c0b63bed707f3b8893a3bc50c0b63b63486dbb4000a53c9e39d4bdf320c3bb9c559f3c40817f3b7285b63b4000a53ce8e3d9bda4b9113af2d64bbcb8ab1d3abb26c1bb94ee9bbc0c0ccebd5871703b4f749d3c2026d8bd50cbc8bbf2d64bbc94edd0bd1efef7bb9c559f3cb8ab1d3abb26c1bb4c5b9d3c06e8d5bdd9378ebb9c559f3c92e9aabd48f9873b96ff4fbcb585d0bdb22592baa85c5ebc47ca223b52c5b03b79439fbc4b261bbd3244a83b5b138cbc50c0b63bed707f3b4000a53c2026d8bd55fe91bb848a59bc3ac23ebdb7caa23b1c1482bcfaa3c8bdb1cc693b650e4bbc8097d0bd006032bb2b825ebce208b8bd8e50833bc4573ebc + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: -0.049993217, y: -0.0011082233, z: 0.000086955726} + m_Extent: {x: 0.05639851, y: 0.0070947492, z: 0.020054765} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &958633841 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 958633842} + - component: {fileID: 958633846} + - component: {fileID: 958633845} + - component: {fileID: 958633844} + - component: {fileID: 958633843} + m_Layer: 0 + m_Name: wrist_1_link + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &958633842 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 958633841} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0.21325004, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 136668627} + - {fileID: 103478478} + - {fileID: 1497065043} + m_Father: {fileID: 2079063361} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &958633843 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 958633841} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 63b6193734b4c8444bcfdf4e9953fe2b, type: 3} + m_Name: + m_EditorClassIdentifier: + xAxis: 0 + jointName: wrist_1_joint + EffortLimit: 1000 + VelocityLimit: 1000 +--- !u!114 &958633844 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 958633841} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7631001c063f69d4495bca90731abab2, type: 3} + m_Name: + m_EditorClassIdentifier: + displayInertiaGizmo: 0 + useUrdfData: 1 + centerOfMass: {x: -0.08505, y: 0, z: 0} + inertiaTensor: {x: 0.002084999, y: 0.00225, z: 0.002084999} + inertiaTensorRotation: {x: 0, y: 0, z: 0, w: 1} + inertialAxisRotation: {x: 0, y: 0, z: 0, w: 1} +--- !u!171741748 &958633845 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 958633841} + m_Enabled: 1 + m_Mass: 0.8 + m_ParentAnchorPosition: {x: 0, y: 0.21325004, z: 0} + m_ParentAnchorRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_ComputeParentAnchor: 1 + m_ArticulationJointType: 2 + m_LinearX: 1 + m_LinearY: 0 + m_LinearZ: 0 + m_SwingY: 2 + m_SwingZ: 2 + m_Twist: 1 + m_XDrive: + lowerLimit: -180 + upperLimit: 180 + stiffness: 0 + damping: 0 + forceLimit: 54 + target: 0 + targetVelocity: 0 + m_YDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_ZDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0 + m_JointFriction: 0 + m_Immovable: 0 + m_UseGravity: 1 +--- !u!114 &958633846 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 958633841} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fba5fd74d37a6cf4284698624eb8f6aa, type: 3} + m_Name: + m_EditorClassIdentifier: + IsBaseLink: 0 +--- !u!1 &962218668 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 962218669} + - component: {fileID: 962218671} + - component: {fileID: 962218670} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &962218669 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 962218668} + m_LocalRotation: {x: 0.000000042146823, y: -1.776356e-15, z: -1.4210848e-14, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 819291651} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &962218670 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 962218668} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 78c14991df9d143128adc14ecc3b0b6d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &962218671 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 962218668} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &964811037 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 964811038} + - component: {fileID: 964811039} + m_Layer: 0 + m_Name: Collisions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &964811038 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 964811037} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1.1862517e-11, y: 0, z: -0.000000014901158} + m_LocalScale: {x: 0.99999946, y: 1.0000006, z: 1} + m_Children: + - {fileID: 780275803} + m_Father: {fileID: 1433821736} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &964811039 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 964811037} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46398bc5d6905ad429a6d2d973afe002, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &965948703 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 965948704} + - component: {fileID: 965948705} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &965948704 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 965948703} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 662902376} + m_Father: {fileID: 1015651687} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &965948705 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 965948703} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1c0c8ba1123c5f949b20e50d5dd6afe4, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!1001 &996931670 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1368358685} + m_Modifications: + - target: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_LocalScale.x + value: 0.9999999 + objectReference: {fileID: 0} + - target: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_LocalScale.y + value: 1.0000001 + objectReference: {fileID: 0} + - target: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_LocalPosition.x + value: -0.000000011175878 + objectReference: {fileID: 0} + - target: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_LocalPosition.y + value: -0.000000011175867 + objectReference: {fileID: 0} + - target: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_LocalPosition.z + value: -0.000000014901158 + objectReference: {fileID: 0} + - target: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8781155580949660236, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + propertyPath: m_Name + value: robotiq_arg2f_140_inner_finger + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 3528148055771103780, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + - {fileID: 643539555478099317, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} +--- !u!4 &996931671 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8002043623621241526, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + m_PrefabInstance: {fileID: 996931670} + m_PrefabAsset: {fileID: 0} +--- !u!1 &996931672 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 8155506598159987073, guid: fdc79b0c3f1294114b38273ab2ad7d2f, type: 3} + m_PrefabInstance: {fileID: 996931670} + m_PrefabAsset: {fileID: 0} +--- !u!64 &996931673 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 996931672} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 1222830843} +--- !u!1 &1000746316 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1000746317} + - component: {fileID: 1000746318} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1000746317 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000746316} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1277517918} + m_Father: {fileID: 587358105} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1000746318 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000746316} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b2685e7e7719cd43814f41f35664c0b, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!1001 &1001576833 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1802392972} + m_Modifications: + - target: {fileID: 53882893725327671, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_Name + value: robotiq_arg2f_140_inner_finger + objectReference: {fileID: 0} + - target: {fileID: 223261204407907176, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 3b0e2ceb0b7d245f185a3ccd43540485, type: 2} + - target: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_LocalScale.x + value: 0.9999999 + objectReference: {fileID: 0} + - target: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_LocalScale.y + value: 1.0000001 + objectReference: {fileID: 0} + - target: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_LocalPosition.x + value: -0.000000011175883 + objectReference: {fileID: 0} + - target: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_LocalPosition.y + value: -0.000000009313218 + objectReference: {fileID: 0} + - target: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_LocalPosition.z + value: 0.000000014901154 + objectReference: {fileID: 0} + - target: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} +--- !u!4 &1001576834 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1507426923395661920, guid: 335cbfa01db21456e95797d3e8b9e164, type: 3} + m_PrefabInstance: {fileID: 1001576833} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1002404874 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1002404875} + - component: {fileID: 1002404879} + - component: {fileID: 1002404878} + - component: {fileID: 1002404877} + - component: {fileID: 1002404876} + m_Layer: 0 + m_Name: wrist_3_link + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1002404875 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002404874} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.08535004, z: -0.000000007450582} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1270630917} + - {fileID: 642810175} + - {fileID: 82561609} + - {fileID: 1739443087} + m_Father: {fileID: 1497065043} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1002404876 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002404874} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 63b6193734b4c8444bcfdf4e9953fe2b, type: 3} + m_Name: + m_EditorClassIdentifier: + xAxis: 0 + jointName: wrist_3_joint + EffortLimit: 1000 + VelocityLimit: 1000 +--- !u!114 &1002404877 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002404874} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7631001c063f69d4495bca90731abab2, type: 3} + m_Name: + m_EditorClassIdentifier: + displayInertiaGizmo: 0 + useUrdfData: 1 + centerOfMass: {x: -0.0619, y: 0, z: 0} + inertiaTensor: {x: 0.00013626661, y: 0.0001792, z: 0.00013626661} + inertiaTensorRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071068} + inertialAxisRotation: {x: 0, y: 0, z: -0.70710677, w: 0.70710677} +--- !u!171741748 &1002404878 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002404874} + m_Enabled: 1 + m_Mass: 0.35 + m_ParentAnchorPosition: {x: 0, y: 0.08535005, z: -0.000000007450582} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0, w: 1.0000001} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_ComputeParentAnchor: 1 + m_ArticulationJointType: 2 + m_LinearX: 1 + m_LinearY: 0 + m_LinearZ: 0 + m_SwingY: 2 + m_SwingZ: 2 + m_Twist: 1 + m_XDrive: + lowerLimit: -180 + upperLimit: 180 + stiffness: 0 + damping: 0 + forceLimit: 54 + target: 0 + targetVelocity: 0 + m_YDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_ZDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0 + m_JointFriction: 0 + m_Immovable: 0 + m_UseGravity: 1 +--- !u!114 &1002404879 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002404874} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fba5fd74d37a6cf4284698624eb8f6aa, type: 3} + m_Name: + m_EditorClassIdentifier: + IsBaseLink: 0 +--- !u!1 &1011804502 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1011804503} + - component: {fileID: 1011804504} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1011804503 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1011804502} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1406488543} + m_Father: {fileID: 103478478} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1011804504 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1011804502} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1c0c8ba1123c5f949b20e50d5dd6afe4, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!1 &1015651686 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1015651687} + - component: {fileID: 1015651688} + m_Layer: 0 + m_Name: Collisions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1015651687 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1015651686} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 965948704} + m_Father: {fileID: 1497065043} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1015651688 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1015651686} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46398bc5d6905ad429a6d2d973afe002, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1062953764 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1062953765} + - component: {fileID: 1062953769} + - component: {fileID: 1062953768} + - component: {fileID: 1062953767} + - component: {fileID: 1062953766} + m_Layer: 0 + m_Name: right_inner_knuckle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1062953765 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1062953764} + m_LocalRotation: {x: -0.9119034, y: 0.41040498, z: -0.000000041669935, w: 0.000000018753685} + m_LocalPosition: {x: -0.01269997, y: 0.06142001, z: -0.000000031664968} + m_LocalScale: {x: 0.99999964, y: 1.0000002, z: 0.9999999} + m_Children: + - {fileID: 1295864729} + - {fileID: 2013516727} + m_Father: {fileID: 582384526} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1062953766 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1062953764} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 63b6193734b4c8444bcfdf4e9953fe2b, type: 3} + m_Name: + m_EditorClassIdentifier: + xAxis: 0 + jointName: right_inner_knuckle_joint + EffortLimit: 1000 + VelocityLimit: 1000 +--- !u!114 &1062953767 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1062953764} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7631001c063f69d4495bca90731abab2, type: 3} + m_Name: + m_EditorClassIdentifier: + displayInertiaGizmo: 0 + useUrdfData: 1 + centerOfMass: {x: -0.050785083, y: 0.0010396864, z: 0.00012301184} + inertiaTensor: {x: 0.000002813192, y: 0.000026193562, z: 0.000028380893} + inertiaTensorRotation: {x: -0.011117614, y: -0.7072224, z: -0.7068938, w: -0.0037429775} + inertialAxisRotation: {x: 0, y: 0, z: 0, w: 1} +--- !u!171741748 &1062953768 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1062953764} + m_Enabled: 1 + m_Mass: 0.027117735 + m_ParentAnchorPosition: {x: -0.01269997, y: 0.06142001, z: -0.00000004656613} + m_ParentAnchorRotation: {x: -0.6448133, y: 0.29020023, z: -0.6448133, w: -0.29020023} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_ComputeParentAnchor: 1 + m_ArticulationJointType: 2 + m_LinearX: 1 + m_LinearY: 0 + m_LinearZ: 0 + m_SwingY: 2 + m_SwingZ: 2 + m_Twist: 1 + m_XDrive: + lowerLimit: -50.173916 + upperLimit: 50.173916 + stiffness: 0 + damping: 0 + forceLimit: 1000 + target: 0 + targetVelocity: 0 + m_YDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_ZDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0 + m_JointFriction: 0 + m_Immovable: 0 + m_UseGravity: 1 +--- !u!114 &1062953769 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1062953764} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fba5fd74d37a6cf4284698624eb8f6aa, type: 3} + m_Name: + m_EditorClassIdentifier: + IsBaseLink: 0 +--- !u!43 &1072107331 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 372 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 64 + localAABB: + m_Center: {x: -0.077448495, y: -0.0027246643, z: -0.00078102574} + m_Extent: {x: 0.03721167, y: 0.04437968, z: 0.032131333} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 300005003f0005000800140006000e0015000e000300150010000600150009000c00170004000d0017000d00090017000a0012001800150003001b000b0009001c0009000d001c00110007001d00080000001f0000001c001f001c000d001f0003000e0021000700110021000c000100230018000c0023000000080024000f00190024001900100024001200170025001800120025001d000700260021000e0026000700210026000e000600270013002600270026000e0027000a001800290011001d0029002300010029001800230029000d0004002a00210011002b0012000a002c00010009002d00290001002d00110029002d00100015002e001b000b002e0015001b002e000b0022002e00220010002e00080005002f00240008002f00160024002f0020000400300012002c0030000400170031001700120031003000040031001200300031000f000200320002001300320019000f00320013001900320002000f00330016001e0033001e00020033002400160033000f002400330014000800340008001f0034001f000d0034000d002a0034002a001400340017000c0035000c00180035002500170035001800250035001d001e0036000a002900360029001d0036002c000a0036001e002c00360009000100370001000c0037000c00090037001a002b0038002b00110038002d000900380011002d00380009000b0039001b00030039000b001b0039000300210039002b001a00390021002b0039003800090039001a00380039001e0016003a002c001e003a002f0005003a0016002f003a00050030003a0030002c003a00130002003b0002001e003b001e001d003b00260013003b001d0026003b00060010003c00100019003c00190013003c00270006003c00130027003c001c0000003d000b001c003d00000028003d0028000b003d0022000b003e00100022003e00000024003e00240010003e00280000003e000b0028003e00050014003f00040020003f002a0004003f0014002a003f00200030003f00 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 64 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 768 + _typelessdata: 5ecf24bda07fed3c9293693bf568eabd0962b6bc5bddecbbb61769bd7cf040bdac7dfbbaca4fbbbdbd21283d1d77f6bc137bb8bda8a7273decf9f83c7c0e9abdf8d629bd72a6f93c93702fbdab0f26bc6ebcf7bc4c54c5bd6a962fbdeb6cdfbc7c0226bd4d9dc5bbc73ded3c40a5e5bd739e2a3d2d2c51bcd5a1d6bd6a962fbd90e4a83cbc2f72bd0f81283d7eaba9bcdf73e7bd1739283d4689283c66d986bdf8f2283d8684d93c46b1a2bd480e24bd8c0501bd7aa526bd70d0eabce43df63bf81526bd336df03bd8f0e9bc0565dcbd480e24bd18b6a5bc7c17cbbd480e24bdcc8de23c3f657abdcc273bbd90309abceb4d30bdeebc993b5771f93c7ab540bd14e30f3b1ccf06bd09a674bd1a5f35bd71519d3ca115d4bd0701283ddf50c23cca0be5bd480e24bd49405e3c5afe26bd81b1c9bcd58186bcf876d1bd9e7b283d0dcacabc438197bd11b9273df0e3f5bca4326cbd1b83293dac89973cacdad0bdda5535bd18b6a5bcb76791bd7cf040bde9cb913ceede26bda9c59d3c9961b53c19a6b2bdb088bdbcefb9ff3c228dbfbd480e24bd9185f6bc917a26bd5b06bf3cbcef91bcf3d2eabd268618bd13f2723b2d2525bdf7e3aabc7871ac3c722adcbda949c0bc2fd3ab3ca03baebdcc273bbd64e7d3bc88a48bbdaa9f2fbdeb6cdfbc460c59bd9831243d07661ebc5eefe7bdb8cd29bd2058c9bb65409abd6907283d8f80f93c9839d1bdc765cbbce2ced4bc4c54c5bdda5535bd2575cb3cca0be5bdd84e1ebdc6246fbcdfc130bd495b7c3c1c7cdfbcf76c31bdba9e93bc6da1d63c8ea9bcbd480e24bd72a6f93c7968c3bd6742273d926aed3c805863bdcc273bbd2dc212bcb61769bdcc273bbd3a35473ce6fa2fbdea873b3ca9f0ee3c38addebd40d8263dc849953cacdad0bdda5535bd71519d3c2cb9e7bd7be0283d58ad0cbc57f0d9bdf60d293dfd33aabc0abfc3bdbfdc283d6470ecbc524794bd1a5f35bdcc8de23c22848ebd7cf040bd09ab8ebc632527bdeb3388bc25a5c7bc06a257bd48a4263d0597f63b96e624bd9158e23c7e5b22bc2928a5bd772ac9bc2e69003d + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: -0.077448495, y: -0.0027246643, z: -0.00078102574} + m_Extent: {x: 0.03721167, y: 0.04437968, z: 0.032131333} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!43 &1083456429 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 372 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 64 + localAABB: + m_Center: {x: 0.004395062, y: 0.07669926, z: -0.00001369603} + m_Extent: {x: 0.044400938, y: 0.037661515, z: 0.031455144} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 1c0039003f0004000c001900140002001a00080014001a000e0011001c00040019001d00190005001d0008000d001e0005001000200012000b0020000b00160020000d000a0021001e000d0021000500190022001000050023000500220023000b001200250012001b0025000200140026001000230027002300150027000c000400280003000c00280017000300280021000a0028000d00080029000a000d00290017002800290028000a00290008001a002a001a0009002a00270015002a0024000e002b0024002b002c001b0012002c00070024002c002b0006002c000c0003002d0019000c002d00220019002d00150023002d00230022002d00040016002e000f0001002f00010025002f00250013002f002b000e002f0013002b002f0004002e002f002e000f002f0010001800300020001000300016000400310004001d0031001d00050031000500200031002000160031001800100032001000270032002a000900320027002a0032000f002e0033002e001600330013002500340025001b0034002c00060034001b002c00340014000800350008001c0035001c001100350026001400350011002600350018000200360002002600360026001f00360030001800360011000e00370007001f0037000e00240037002400070037002600110037001f00260037000e000000380000001e0038001e002100380028000400380021002800380004002f0038002f000e0038001c00080039001e000000390008001e003900020018003a0009001a003a001a0002003a00320009003a00180032003a00030017003b00290008003b00170029003b0008002a003b002a0015003b002d0003003b0015002d003b0001000f003c0016000b003c00250001003c000b0025003c000f0033003c00330016003c002b0013003d0006002b003d00340006003d00130034003d001f0007003e00120020003e0007002c003e002c0012003e00200030003e0036001f003e00300036003e0000000e003f000e001c003f00390000003f00 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 64 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 768 + _typelessdata: 0e5d21bd89a7853dee65d5bc30e5b53cfb35ea3d9073e4b9ce15423ddaf6713dc1db82bc8300bbbb620d333d8709fa3c33dd23bd19a5d33d5c9bc53c86c5303d186db83da7d6f93c471320bd2a85d23dd0e3c8bc86c5303d49f4c33d06b3eabc2ced803a0ae61f3d005eefbc5266e33cc4c6233d193f693ce5c11fbddd895a3d0173273c86c5303d0096e63d386f193cbb2120bd3702993da056f83c8374dfbc4a66223dd26693bb667521bd6443ac3db1db00bdd31621bd2ad7e83d802cf93bce15423de711903dcea6cb3c03fd2a3daa5aa13d79e500bd098e363d8cebdd3dc1db82bc318921bdf745e63d542638bc923d973c0e2d233d3e63c9bcca56fd3b69a7233d302aed3cc13d253d62d0e03d62ff913c9cbf8fbcfe88243d0d67b53c50de473d48356c3d1bb5d63b7b9a20bd97eeb93d6800f93c430ffa3c5038233dac40eabb03fd2a3d62d0e03d826e8ebc105b763a32802e3d459cfebc3976e33c0783c73d080ded3c393491bc0543233dfa63b3bcce15423ddbe1ac3db1a8d3bc4b4d3c3de7b9c93da321c03cd8d520bdadee593df46e21bc477dd73cd4a2a63dc0c8003d86c5303d249d9b3da7d6f93c0a90e43c733cc23d31caf5bc03fd2a3dc976e93d9e71c8bb098e363db0f2923d06b3eabc86c5303dd5a1813dcea6cb3c3a5d21bd07bb7a3d9bdab73ce20fc9bc1a9e223db9e9543cd300b93ca75f223d3ce4ac3c747921bdea1dc53defa2ebbc03fd2a3dbd9ecc3d733bdfbcb3fc803a7cc5303da116fe3c080422bd81b4e33dc6066c3c649c22bd767be93df5d2c0bb50de473d122d8d3d62ff913c03fd2a3d9283cf3d9039d73c4b4d3c3d48356c3da06c863c66f8c43ceca1e63da157563c93ffb73c5e06e33da44f87bcd498403c63e1333dc4edf4bc50de473de711903d826e8ebc03fd2a3d79a7b23d79e500bd2e2d22bd0d6d7a3dc02db5bc7da6e4bb4711343d6aa5f4bcce15423d0aaa603dd2aa743b7589853ad1ea213dead4ef3c03fd2a3dc976e93d1bb5d63be51820bd7479dd3d991a9dbc4b4d3c3d9283cf3dd878a5bc52c420bdc83e963dffaaf5bc + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0.004395062, y: 0.07669926, z: -0.00001369603} + m_Extent: {x: 0.044400938, y: 0.037661515, z: 0.031455144} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &1093057477 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1093057478} + - component: {fileID: 1093057479} + m_Layer: 0 + m_Name: Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1093057478 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1093057477} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1.1862517e-11, y: 0, z: -0.000000014901158} + m_LocalScale: {x: 0.99999946, y: 1.0000006, z: 1} + m_Children: + - {fileID: 584313692} + m_Father: {fileID: 1248956524} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1093057479 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1093057477} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e9090ae501ff9cd459bec5271d40249c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1114402591 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1114402592} + - component: {fileID: 1114402593} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1114402592 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1114402591} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.00000002980234, y: -3.5527126e-15, z: 0} + m_LocalScale: {x: 0.99999964, y: 1, z: 1.0000004} + m_Children: + - {fileID: 2033197899} + m_Father: {fileID: 685364116} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1114402593 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1114402591} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b2685e7e7719cd43814f41f35664c0b, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!43 &1118981737 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 198 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 35 + localAABB: + m_Center: {x: -0.049993217, y: -0.0011082233, z: 0.000086955726} + m_Extent: {x: 0.05639851, y: 0.0070947492, z: 0.020054765} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 060019002200030000000600030007000800060009000a00070004000c00040008000c00080007000c00080001000e0000000b000e000b0008000e00000003000f000b0000000f000600000011000900060011000a000900110005000d00120003000800130008000b0013000b000f0013000600050014000200060014001200020014000500120014000300060016000700030016000400070016000600100016001500040016001000150016000f000300170003001300170013000f001700060002001800100006001800020012001800150010001800120015001800010008001a000d0001001a0001000a001b000e0001001b000a0011001b0011000e001b000a0001001c0001000d001c00050019001c0000000e001d00110000001d000e0011001d00080004001e0012000d001e00040015001e00150012001e000d001a001e0006000a001f00190006001f000a001c001f001c0019001f000d000500200005001c0020001c000d0020001a000800210008001e0021001e001a002100050006002200190005002200 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 35 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 420 + _typelessdata: 80e3d13babef113b4000a53c7aea84bce0cbab3b6a889bbc06e8d5bd009e023a9c559f3c184badbb7425e4bb4000a53cefbbd4bd7425e4bb848a59bc0c0ccebd5871703b276942bc679dc3bdf41e9b3b4000a53c872dcbbdc36506bcc1909b3c184badbb7425e4bb8893a3bc519e30ba9f2ac43bbadc9b3c519e30ba9f2ac43b02709abc50c0b63b63486dbb8893a3bc37efbfbdc96604bcfd6a49bcec73d6bdc876b63a848a59bc50c0b63bed707f3b8893a3bc50c0b63b63486dbb4000a53c9e39d4bdf320c3bb9c559f3c40817f3b7285b63b4000a53ce8e3d9bda4b9113af2d64bbcb8ab1d3abb26c1bb94ee9bbc0c0ccebd5871703b4f749d3c2026d8bd50cbc8bbf2d64bbc94edd0bd1efef7bb9c559f3cb8ab1d3abb26c1bb4c5b9d3c06e8d5bdd9378ebb9c559f3c92e9aabd48f9873b96ff4fbcb585d0bdb22592baa85c5ebc47ca223b52c5b03b79439fbc4b261bbd3244a83b5b138cbc50c0b63bed707f3b4000a53c2026d8bd55fe91bb848a59bc3ac23ebdb7caa23b1c1482bcfaa3c8bdb1cc693b650e4bbc8097d0bd006032bb2b825ebce208b8bd8e50833bc4573ebc + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: -0.049993217, y: -0.0011082233, z: 0.000086955726} + m_Extent: {x: 0.05639851, y: 0.0070947492, z: 0.020054765} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!43 &1157715599 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 90 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 17 + localAABB: + m_Center: {x: -0.058055922, y: 0.0101638585, z: -0.019305026} + m_Extent: {x: 0.0069044214, y: 0.011836151, z: 0.018740574} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 06000f001000010002000300010003000500030004000700000005000800050003000800030007000800010005000900030002000a00040003000a00020004000a00070000000b00000008000b00080007000b00020001000c00040002000c00010006000c00060004000c00050000000d00090005000d0009000d000e00060001000e00010009000e0006000e000f000e000d000f000f000d0010000400060010000000070010000700040010000d0000001000 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 17 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 204 + _typelessdata: ee0985bd3958af3cb8b216bc07d25abdd030dbbab4d51bbd92f052bdd030dbbab4d51bbd8f936abdd030dbbad098c5ba3d8451bd5d39b43cd960cbbcee0985bdd030dbba213a36bc1ab262bd3958af3c1af013bd985f6abd5d39b43cd4f713baee0985bdd030dbbad098c5ba331981bdd030dbba93d1a9bc92f052bdd030dbbafc58c9bcee0985bd3958af3cd098c5ba92f052bd3958af3cb4d51bbd331981bdc4d48f3c93d1a9bcdf7072bdd030dbba989cf8bcdf7072bdc4d48f3c989cf8bc54527abd3958af3cfc58c9bc + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: -0.058055922, y: 0.0101638585, z: -0.019305026} + m_Extent: {x: 0.0069044214, y: 0.011836151, z: 0.018740574} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1001 &1168616019 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1455610889} + m_Modifications: + - target: {fileID: 2110151842802632199, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_Name + value: robotiq_arg2f_140_outer_knuckle + objectReference: {fileID: 0} + - target: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_LocalScale.x + value: 0.9999978 + objectReference: {fileID: 0} + - target: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_LocalScale.y + value: 1.0000023 + objectReference: {fileID: 0} + - target: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_LocalPosition.x + value: 1.18634295e-11 + objectReference: {fileID: 0} + - target: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_LocalPosition.y + value: -7.1054134e-15 + objectReference: {fileID: 0} + - target: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_LocalPosition.z + value: -0.000000014901167 + objectReference: {fileID: 0} + - target: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7706885152934118053, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 48cf3f5d1d9804436878364d3b0cee70, type: 2} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} +--- !u!4 &1168616020 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + m_PrefabInstance: {fileID: 1168616019} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1170705980 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1170705981} + - component: {fileID: 1170705982} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1170705981 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1170705980} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1286825798} + m_Father: {fileID: 728016273} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1170705982 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1170705980} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1c0c8ba1123c5f949b20e50d5dd6afe4, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!1 &1172479705 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1172479706} + - component: {fileID: 1172479707} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1172479706 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1172479705} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.000000022351758, y: -0.000000020489082, z: 0.000000029802314} + m_LocalScale: {x: 0.9999999, y: 1.0000002, z: 1} + m_Children: + - {fileID: 835330259} + m_Father: {fileID: 218868508} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1172479707 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1172479705} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1c0c8ba1123c5f949b20e50d5dd6afe4, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!1001 &1173739361 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 780275803} + m_Modifications: + - target: {fileID: 5697005687179860018, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_Name + value: robotiq_arg2f_140_inner_knuckle + objectReference: {fileID: 0} + - target: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_LocalScale.x + value: 0.9999978 + objectReference: {fileID: 0} + - target: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_LocalScale.y + value: 1.0000023 + objectReference: {fileID: 0} + - target: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_LocalPosition.x + value: 1.18634295e-11 + objectReference: {fileID: 0} + - target: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_LocalPosition.y + value: -7.1054134e-15 + objectReference: {fileID: 0} + - target: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_LocalPosition.z + value: -0.000000014901167 + objectReference: {fileID: 0} + - target: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 7108574193541098280, guid: a29a365f43d59450fb69adb775090b94, type: 3} + - {fileID: 3917207196220425563, guid: a29a365f43d59450fb69adb775090b94, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: a29a365f43d59450fb69adb775090b94, type: 3} +--- !u!4 &1173739362 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8179353052270300534, guid: a29a365f43d59450fb69adb775090b94, type: 3} + m_PrefabInstance: {fileID: 1173739361} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1173739363 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 7208441754978959086, guid: a29a365f43d59450fb69adb775090b94, type: 3} + m_PrefabInstance: {fileID: 1173739361} + m_PrefabAsset: {fileID: 0} +--- !u!64 &1173739364 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1173739363} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 915062713} +--- !u!1 &1182380622 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1182380623} + - component: {fileID: 1182380624} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1182380623 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1182380622} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.00000002980234, y: -3.5527126e-15, z: 0} + m_LocalScale: {x: 0.99999964, y: 1, z: 1.0000004} + m_Children: + - {fileID: 1741854940} + m_Father: {fileID: 712208461} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1182380624 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1182380622} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1c0c8ba1123c5f949b20e50d5dd6afe4, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!43 &1189489621 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 240 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 42 + localAABB: + m_Center: {x: -0.033225037, y: 0.04544718, z: -0.033237018} + m_Extent: {x: 0.031730413, y: 0.024040543, z: 0.031730413} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 22000f002900020001000600030005000700060004000700050006000700050003000900020006000a00030007000b00070008000b00050009000f000f00090011000a000600130011000a0013000e000900140012000e00140003000b0015000400060016000600010016000700040016000100080016000800070016000600050018000c000d001900190010001a00100018001a000c0019001a0002000a001b00120002001b000e0012001b0009000e001c000e001b001c000f0011001d000b0008001e0015000b001e00170015001e00090003001f00140009001f00120014001f00030015001f001300060020000d001300200005000f0021000f000c0021001800050021000c001a0021001a001800210000000d0022000d000c0022000c000f0022000600180023001800100023000d000000240013000d00240011001300240000001d0024001d00110024000100020025000800010025000200120025001200170025001e000800250017001e0025000a00110026001100090026001b000a00260009001c0026001c001b00260017001200270015001700270012001f0027001f001500270019000d0028001000190028002000060028000d00200028000600230028002300100028001d00000029000f001d002900000022002900 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 42 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 504 + _typelessdata: 5bc85abd19bd163d68aaf8bc4c13eebbf85caf3ca50d85bd194b8abcf85caf3c071c81bd649655bc944f8e3dbc3143bd2b4615bb4539b43c2b0f16bb2c2543bd944f8e3d4079c5ba5d0785bdf85caf3c4079c5ba40e7c3ba944f8e3d4079c5ba40e7c3baba2bbf3ca50d85bd4891f8bc944f8e3dd4b123bd74483bbdf85caf3cbc3143bd2b792fbbb4798c3d24fe40bd2c2543bd5b5e8a3d39648abc43487abd9df0ce3c98aab9bce02b04bd8570ee3c27b862bd44a523bd944f8e3d68aaf8bc43487abda8da0e3dcc77eebb2c2543bdba2bbf3c04553bbd7891b9bc9df0ce3cd3547abd4f886abdf85caf3c703804bd01cba9bc617e823dbc3143bd4c13eebb5b5e8a3df8144bbd40e7c3baf85caf3ca50d85bd649655bca1abde3c071c81bd68084bbd5b5e8a3d4079c5babf1581bda1abde3ca4c855bc20e552bd511a7d3dd4c816bce02b04bdf85caf3cdf946abd08c21bbd8570ee3cb0f152bd20e552bd8570ee3c98ce1bbd582760bbf8b7553d27b862bd194b8abc5b5e8a3dbc3143bdbf1581bdf85caf3c39648abc2c2543bd944f8e3da4c855bc2c2543bd617e823d21e4a9bc5d0785bdba2bbf3c4079c5ba4f886abdba2bbf3c703804bd4c13eebbba2bbf3ca50d85bd74483bbdba2bbf3cbc3143bd649655bce037753db0f152bd5d0785bdba2bbf3ccc77eebb2c2543bd7a955d3df8f0e8bc + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: -0.033225037, y: 0.04544718, z: -0.033237018} + m_Extent: {x: 0.031730413, y: 0.024040543, z: 0.031730413} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &1206775185 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1206775186} + - component: {fileID: 1206775187} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1206775186 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206775185} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2119601899} + m_Father: {fileID: 204852057} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1206775187 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206775185} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b2685e7e7719cd43814f41f35664c0b, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!43 &1222830843 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 228 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 40 + localAABB: + m_Center: {x: -0.018881917, y: -0.008967342, z: -0.00009733625} + m_Extent: {x: 0.025139496, y: 0.015205326, z: 0.007874187} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 0a001f002700060003000700020006000700030006000900020007000b00040000000c00060004000c0001000b000d000b0007000d00070003000e000a000e000f00030009000f000e0003000f001000050011000900060014000600020015000400060015000e000a0016001000080016000a001000160008001200160012000e0016000000040017000800100017000b0001001800010013001800130004001800110005001900000011001900120008001a00130012001a00080017001a0001000e001b000e0012001b00130001001b00120013001b0001000d001c000d0007001c000e0001001c0002000b001d000f0009001e00190005001e00090019001e000a000f001f000c000000200006000c0020000900140020001400060020001900090020000000190020001100000021001000110021000000170021001700100021000b00180022001800040022001d000b00220007000e0023001c00070023000e001c00230004001300240017000400240013001a0024001a001700240015000200250004001500250002001d0025002200040025001d00220025000f001e0026001e000500260005001f0026001f000f00260005001000270010000a0027001f0005002700 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 40 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 480 + _typelessdata: 08581fbbbda8b8bcfe9a02bce06cfa3afe67cc3b2e00ed3b3b582dbd953353bcc82adcbbb48731bdbaf8bebc9467df3be06cfa3a508eba3bfe9a02bcc092b0ba9038b4bc2e00ed3bcc4f34bd3649c2bcb92cecbb3b582dbd953353bcc0c9d53b600ccd3bc0f9f73a3661f3bb96e496bbc205c6bc2e00ed3b205ba93b4ca420bbf4d4fe3ba5d54dbbc395a83b861ce2bbddf547bc568fc1bcfe9a02bca5d54dbbc395a83b7ebbdb3b6cac973b14b3663bf4d4fe3bf80b85bb291fbdbcf4d4fe3baa35b63b92c409bb08d2ecbbc092b0ba9038b4bc3661f3bbc033bb3b14b3663b2e00ed3b58f6673b508eba3b3661f3bbd373a6bbe5fcc1bc9099ebbb0ac1d7bc5225d3bb1c4ff3bb600ccd3bc0f9f73a2e00ed3bc033bb3bc0f9f73afe9a02bce06cfa3afe67cc3b3661f3bb08581fbb291fbdbc3661f3bbc033bb3b14b3663b3661f3bb58f6673b508eba3b2e00ed3b1eb617bcf761c93abc76ea3bb122aebce52e64bbaa37f0bb08581fbb291fbdbc2e00ed3b003787b9ee9790bcf4d4fe3b96e496bb568fc1bcfe9a02bc40f5f7ba9038b4bcfe9a02bca7ad76bb6686943bd4c8f0bbd6d926bc3c9f213a218eec3b6cac973b3833853bfe9a02bce332cfbc0db0b2bbfce8f1bb08581fbb9038b4bcf4d4fe3bccd3853b4a3abbbbf4d4fe3b + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: -0.018881917, y: -0.008967342, z: -0.00009733625} + m_Extent: {x: 0.025139496, y: 0.015205326, z: 0.007874187} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &1225626586 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1225626587} + - component: {fileID: 1225626588} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1225626587 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1225626586} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.000000029802322, z: -0.009999993} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_Children: + - {fileID: 769161765} + m_Father: {fileID: 454323622} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1225626588 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1225626586} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1c0c8ba1123c5f949b20e50d5dd6afe4, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 0 +--- !u!1001 &1232913378 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3075759398607946752, guid: ad52ce3c63e5e41e089ede024ab45d65, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 3075759398607946752, guid: ad52ce3c63e5e41e089ede024ab45d65, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3075759398607946752, guid: ad52ce3c63e5e41e089ede024ab45d65, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3075759398607946752, guid: ad52ce3c63e5e41e089ede024ab45d65, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3075759398607946756, guid: ad52ce3c63e5e41e089ede024ab45d65, type: 3} + propertyPath: m_Name + value: Floor + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ad52ce3c63e5e41e089ede024ab45d65, type: 3} +--- !u!43 &1235181549 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 108 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 20 + localAABB: + m_Center: {x: -0.02665231, y: 0.01016388, z: -0.04622763} + m_Extent: {x: 0.02515411, y: 0.011836172, z: 0.018742438} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 110009001300040001000500010004000600030005000700040005000800050003000800080003000a00040008000a0009000a000b00010002000b00030007000b00070005000b00020009000b000a0003000b00000006000c00060004000c00010006000d00060000000e0000000a000e000a0009000e000d0006000e00050001000f0001000b000f000b0005000f0002000100100001000d00100010000d0011000e00090011000d000e0011000a000000120004000a00120000000c0012000c0004001200090002001300020010001300100011001300 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 20 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 240 + _typelessdata: 30ef52bd3958af3c989a2bbd9d0c36bcd030dbba070f85bd9d0c36bc20949f3c070f85bd57a00dbd5d39b43cb0c4f1bc30ef52bdd030dbbac4e2e8bc405fc4bad030dbba669a6abdbf842bbdd030dbba99f852bd405fc4ba3958af3c669a6abd80000cbdd030dbbaf8adf8bc2c55c9bc3958af3c5a5a7abdede94fbd7439b43ca028e1bc405fc4ba3958af3c070f85bd30ef52bdd030dbba989a2bbdc07cf8bcd030dbba807872bdbf842bbd3958af3c99f852bd405fc4bad030dbba070f85bdedd0a9bcd030dbba1a1e81bdc07cf8bcc4d48f3c807872bdf83254bd1983b03c8009e7bcedd0a9bcc4d48f3c1a1e81bd + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: -0.02665231, y: 0.01016388, z: -0.04622763} + m_Extent: {x: 0.02515411, y: 0.011836172, z: 0.018742438} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &1240013163 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1240013164} + - component: {fileID: 1240013168} + - component: {fileID: 1240013167} + - component: {fileID: 1240013166} + - component: {fileID: 1240013165} + m_Layer: 0 + m_Name: left_outer_finger + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1240013164 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1240013163} + m_LocalRotation: {x: 0.000000024125677, y: -0.0000000022204616, z: 4.859595e-15, w: 1} + m_LocalPosition: {x: -0.018220043, y: 0.02600183, z: -0.000000027992378} + m_LocalScale: {x: 0.99999976, y: 1.0000001, z: 1} + m_Children: + - {fileID: 163649341} + - {fileID: 717445035} + - {fileID: 377676475} + m_Father: {fileID: 1794209838} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1240013165 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1240013163} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 074632cab556f5b408839af8574308df, type: 3} + m_Name: + m_EditorClassIdentifier: + xAxis: 0 + jointName: left_outer_finger_joint + EffortLimit: 1000 + VelocityLimit: 1000 +--- !u!114 &1240013166 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1240013163} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7631001c063f69d4495bca90731abab2, type: 3} + m_Name: + m_EditorClassIdentifier: + displayInertiaGizmo: 0 + useUrdfData: 1 + centerOfMass: {x: -0.037390795, y: -0.020802742, z: 0.00030115855} + inertiaTensor: {x: 0.0000015959833, y: 0.000015251834, z: 0.000016230448} + inertiaTensorRotation: {x: 0.20687526, y: -0.6761315, z: -0.6762144, w: 0.20684034} + inertialAxisRotation: {x: 0, y: 0, z: 0, w: 1} +--- !u!171741748 &1240013167 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1240013163} + m_Enabled: 1 + m_Mass: 0.02261424 + m_ParentAnchorPosition: {x: -0.018220054, y: 0.02600182, z: -0.00000004289354} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0.707107, w: 0.707107} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068} + m_ComputeParentAnchor: 1 + m_ArticulationJointType: 0 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 2 + m_SwingZ: 2 + m_Twist: 2 + m_XDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_YDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_ZDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_Immovable: 0 + m_UseGravity: 1 +--- !u!114 &1240013168 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1240013163} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fba5fd74d37a6cf4284698624eb8f6aa, type: 3} + m_Name: + m_EditorClassIdentifier: + IsBaseLink: 0 +--- !u!43 &1241379832 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 108 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 20 + localAABB: + m_Center: {x: 0.057939433, y: 0.010163826, z: 0.013489938} + m_Extent: {x: 0.0078922715, y: 0.011836118, z: 0.01578458} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 0d0003001300010002000300030002000400050001000800060004000900040007000900070000000900080000000a00050008000a00070005000b0005000a000b00080001000d00030004000e00040006000e00060009000e000c0003000e0009000c000e00000007000f000a0000000f0007000b000f000b000a000f000000080010000900000010000c00090010000d000c00100008000d0010000100030011000d000100110003000d00110002000100120004000200120001000500120007000400120005000700120003000c0013000c000d001300 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 20 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 240 + _typelessdata: 6001763d3958af3c3b0ce03c7f7f563dd030dbba77f1ca3b7f7f563d00438439d0a8c4bac6d2863d00438439d0a8c4ba2f47553d3a39b43cb56116bba29e4e3dd030dbba1ed1ef3c8de1823d3958af3cd0a8c4ba41fe4c3d1e39b43c2928d53c3de27d3dd030dbbac688c03c8de1823d3958af3cdb81813c17226e3dd030dbba1ed1ef3ca29e4e3d3958af3c1ed1ef3cc6d2863de423413c77f1ca3b8de1823dd030dbbabe46913cc6d2863dc4d48f3cd0a8c4ba17226e3d3958af3c1ed1ef3c8de1823dc4d48f3cbe46913c8de1823dd030dbba77f1ca3ba29e4e3dd030dbba5847d03cc6d2863d42830e3b77f1ca3b + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0.057939433, y: 0.010163826, z: 0.013489938} + m_Extent: {x: 0.0078922715, y: 0.011836118, z: 0.01578458} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &1248956523 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1248956524} + - component: {fileID: 1248956528} + - component: {fileID: 1248956527} + - component: {fileID: 1248956526} + - component: {fileID: 1248956525} + m_Layer: 0 + m_Name: right_outer_knuckle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1248956524 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1248956523} + m_LocalRotation: {x: 0.9119034, y: -0.41040498, z: 0.00000012139105, w: -0.000000054632427} + m_LocalPosition: {x: -0.03060105, y: 0.054905012, z: -0.000000033527613} + m_LocalScale: {x: 0.99999964, y: 1.0000002, z: 0.9999999} + m_Children: + - {fileID: 1093057478} + - {fileID: 124217963} + - {fileID: 1557562617} + m_Father: {fileID: 582384526} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1248956525 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1248956523} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 63b6193734b4c8444bcfdf4e9953fe2b, type: 3} + m_Name: + m_EditorClassIdentifier: + xAxis: 0 + jointName: right_outer_knuckle_joint + EffortLimit: 1000 + VelocityLimit: 1000 +--- !u!114 &1248956526 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1248956523} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7631001c063f69d4495bca90731abab2, type: 3} + m_Name: + m_EditorClassIdentifier: + displayInertiaGizmo: 0 + useUrdfData: 1 + centerOfMass: {x: -0.019943587, y: 0.029224526, z: -0.0002} + inertiaTensor: {x: 0.000001, y: 0.0000028040658, z: 0.0000028932823} + inertiaTensorRotation: {x: 0.8970799, y: -0.44186842, z: -2.4389198e-13, w: 3.8678736e-13} + inertialAxisRotation: {x: 0, y: 0, z: 0, w: 1} +--- !u!171741748 &1248956527 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1248956523} + m_Enabled: 1 + m_Mass: 0.008531983 + m_ParentAnchorPosition: {x: -0.03060105, y: 0.054905027, z: -0.000000048428774} + m_ParentAnchorRotation: {x: 0.6448133, y: -0.29020023, z: 0.6448133, w: 0.29020023} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_ComputeParentAnchor: 1 + m_ArticulationJointType: 2 + m_LinearX: 1 + m_LinearY: 0 + m_LinearZ: 0 + m_SwingY: 2 + m_SwingZ: 2 + m_Twist: 1 + m_XDrive: + lowerLimit: -41.53944 + upperLimit: 41.53944 + stiffness: 0 + damping: 0 + forceLimit: 1000 + target: 0 + targetVelocity: 0 + m_YDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_ZDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0 + m_JointFriction: 0 + m_Immovable: 0 + m_UseGravity: 1 +--- !u!114 &1248956528 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1248956523} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fba5fd74d37a6cf4284698624eb8f6aa, type: 3} + m_Name: + m_EditorClassIdentifier: + IsBaseLink: 0 +--- !u!1001 &1259912826 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 677956708} + m_Modifications: + - target: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_LocalScale.x + value: 0.9999999 + objectReference: {fileID: 0} + - target: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_LocalScale.y + value: 1.0000001 + objectReference: {fileID: 0} + - target: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_LocalPosition.x + value: -0.000000011153517 + objectReference: {fileID: 0} + - target: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_LocalPosition.y + value: -0.000000009881481 + objectReference: {fileID: 0} + - target: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_LocalPosition.z + value: -0.000000014901163 + objectReference: {fileID: 0} + - target: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3667646430467322617, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_Name + value: robotiq_arg2f_140_outer_finger + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 2263742742463502134, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + - {fileID: 1197306017795833829, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} +--- !u!4 &1259912827 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + m_PrefabInstance: {fileID: 1259912826} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1259912828 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 7080858345236482477, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + m_PrefabInstance: {fileID: 1259912826} + m_PrefabAsset: {fileID: 0} +--- !u!64 &1259912829 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1259912828} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 495216637} +--- !u!1001 &1260708468 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 584313692} + m_Modifications: + - target: {fileID: 2110151842802632199, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_Name + value: robotiq_arg2f_140_outer_knuckle + objectReference: {fileID: 0} + - target: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_LocalScale.x + value: 0.9999978 + objectReference: {fileID: 0} + - target: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_LocalScale.y + value: 1.0000023 + objectReference: {fileID: 0} + - target: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_LocalPosition.x + value: 1.18634295e-11 + objectReference: {fileID: 0} + - target: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_LocalPosition.y + value: -7.1054134e-15 + objectReference: {fileID: 0} + - target: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_LocalPosition.z + value: -0.000000014901167 + objectReference: {fileID: 0} + - target: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7706885152934118053, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 48cf3f5d1d9804436878364d3b0cee70, type: 2} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} +--- !u!4 &1260708469 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5263614485598257404, guid: 3d6d0b08f1aec46729f1a9e76b301e7a, type: 3} + m_PrefabInstance: {fileID: 1260708468} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1270630916 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1270630917} + - component: {fileID: 1270630918} + m_Layer: 0 + m_Name: Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1270630917 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1270630916} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1704117254} + m_Father: {fileID: 1002404875} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1270630918 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1270630916} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e9090ae501ff9cd459bec5271d40249c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1271465852 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1271465853} + - component: {fileID: 1271465854} + m_Layer: 0 + m_Name: Collisions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1271465853 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1271465852} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.000000011175874, y: -0.000000009313224, z: -0.000000014901165} + m_LocalScale: {x: 0.99999976, y: 1.0000001, z: 1} + m_Children: + - {fileID: 1368358685} + m_Father: {fileID: 377676475} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1271465854 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1271465852} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46398bc5d6905ad429a6d2d973afe002, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1277517917 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1000746317} + m_Modifications: + - target: {fileID: -8679921383154817045, guid: 88d0c818b457046f69472701b8f57136, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 88d0c818b457046f69472701b8f57136, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 88d0c818b457046f69472701b8f57136, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 88d0c818b457046f69472701b8f57136, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 88d0c818b457046f69472701b8f57136, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 88d0c818b457046f69472701b8f57136, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 88d0c818b457046f69472701b8f57136, type: 3} + propertyPath: m_LocalRotation.y + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 88d0c818b457046f69472701b8f57136, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 88d0c818b457046f69472701b8f57136, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 88d0c818b457046f69472701b8f57136, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 88d0c818b457046f69472701b8f57136, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -7264643304161535556, guid: 88d0c818b457046f69472701b8f57136, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: -4286396916692950121, guid: 88d0c818b457046f69472701b8f57136, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: -1663525628340895374, guid: 88d0c818b457046f69472701b8f57136, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: 55291342286754144, guid: 88d0c818b457046f69472701b8f57136, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: 919132149155446097, guid: 88d0c818b457046f69472701b8f57136, type: 3} + propertyPath: m_Name + value: shoulder + objectReference: {fileID: 0} + - target: {fileID: 7374791279145423755, guid: 88d0c818b457046f69472701b8f57136, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: 7850734403127241072, guid: 88d0c818b457046f69472701b8f57136, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 88d0c818b457046f69472701b8f57136, type: 3} +--- !u!4 &1277517918 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: 88d0c818b457046f69472701b8f57136, type: 3} + m_PrefabInstance: {fileID: 1277517917} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1286825797 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1170705981} + m_Modifications: + - target: {fileID: 7839942121231086086, guid: 81682fec7c07b45dfae67f38204f6d65, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7839942121231086086, guid: 81682fec7c07b45dfae67f38204f6d65, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7839942121231086086, guid: 81682fec7c07b45dfae67f38204f6d65, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7839942121231086086, guid: 81682fec7c07b45dfae67f38204f6d65, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7839942121231086086, guid: 81682fec7c07b45dfae67f38204f6d65, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7839942121231086086, guid: 81682fec7c07b45dfae67f38204f6d65, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7839942121231086086, guid: 81682fec7c07b45dfae67f38204f6d65, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7839942121231086086, guid: 81682fec7c07b45dfae67f38204f6d65, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7839942121231086086, guid: 81682fec7c07b45dfae67f38204f6d65, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7839942121231086086, guid: 81682fec7c07b45dfae67f38204f6d65, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7839942121231086086, guid: 81682fec7c07b45dfae67f38204f6d65, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8617598630993110271, guid: 81682fec7c07b45dfae67f38204f6d65, type: 3} + propertyPath: m_Name + value: upperarm + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 8575962129542519175, guid: 81682fec7c07b45dfae67f38204f6d65, type: 3} + - {fileID: 5587378482721998342, guid: 81682fec7c07b45dfae67f38204f6d65, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: 81682fec7c07b45dfae67f38204f6d65, type: 3} +--- !u!4 &1286825798 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7839942121231086086, guid: 81682fec7c07b45dfae67f38204f6d65, type: 3} + m_PrefabInstance: {fileID: 1286825797} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1286825799 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 190614109909841266, guid: 81682fec7c07b45dfae67f38204f6d65, type: 3} + m_PrefabInstance: {fileID: 1286825797} + m_PrefabAsset: {fileID: 0} +--- !u!64 &1286825800 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1286825799} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 1867708184} +--- !u!64 &1286825801 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1286825799} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 1628185143} +--- !u!64 &1286825802 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1286825799} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 1313423074} +--- !u!1 &1289901341 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1289901342} + - component: {fileID: 1289901343} + m_Layer: 0 + m_Name: Collisions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1289901342 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1289901341} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1.1862517e-11, y: 0, z: -0.000000014901158} + m_LocalScale: {x: 0.99999946, y: 1.0000006, z: 1} + m_Children: + - {fileID: 27488076} + m_Father: {fileID: 1794209838} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1289901343 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1289901341} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46398bc5d6905ad429a6d2d973afe002, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1295864728 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1295864729} + - component: {fileID: 1295864730} + m_Layer: 0 + m_Name: Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1295864729 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1295864728} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1.1862517e-11, y: 0, z: -0.000000014901158} + m_LocalScale: {x: 0.99999946, y: 1.0000006, z: 1} + m_Children: + - {fileID: 333540556} + m_Father: {fileID: 1062953765} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1295864730 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1295864728} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e9090ae501ff9cd459bec5271d40249c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1297919007 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1297919008} + - component: {fileID: 1297919009} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1297919008 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1297919007} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.372505e-11, y: -7.1054206e-15, z: -0.000000029802322} + m_LocalScale: {x: 0.99999887, y: 1.0000011, z: 1} + m_Children: + - {fileID: 2078823356} + m_Father: {fileID: 124217963} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1297919009 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1297919007} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1c0c8ba1123c5f949b20e50d5dd6afe4, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!1001 &1306806978 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 130917711} + m_Modifications: + - target: {fileID: -8679921383154817045, guid: e5d16455f57d742d58ab31dc827f7010, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e5d16455f57d742d58ab31dc827f7010, type: 3} + propertyPath: m_LocalScale.x + value: 1.0000002 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e5d16455f57d742d58ab31dc827f7010, type: 3} + propertyPath: m_LocalScale.y + value: 1.0000001 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e5d16455f57d742d58ab31dc827f7010, type: 3} + propertyPath: m_LocalScale.z + value: 1.0000001 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e5d16455f57d742d58ab31dc827f7010, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e5d16455f57d742d58ab31dc827f7010, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e5d16455f57d742d58ab31dc827f7010, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e5d16455f57d742d58ab31dc827f7010, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e5d16455f57d742d58ab31dc827f7010, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e5d16455f57d742d58ab31dc827f7010, type: 3} + propertyPath: m_LocalRotation.y + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e5d16455f57d742d58ab31dc827f7010, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e5d16455f57d742d58ab31dc827f7010, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e5d16455f57d742d58ab31dc827f7010, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e5d16455f57d742d58ab31dc827f7010, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -7264643304161535556, guid: e5d16455f57d742d58ab31dc827f7010, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: -4286396916692950121, guid: e5d16455f57d742d58ab31dc827f7010, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: 55291342286754144, guid: e5d16455f57d742d58ab31dc827f7010, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: 919132149155446097, guid: e5d16455f57d742d58ab31dc827f7010, type: 3} + propertyPath: m_Name + value: wrist2 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: e5d16455f57d742d58ab31dc827f7010, type: 3} +--- !u!4 &1306806979 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: e5d16455f57d742d58ab31dc827f7010, type: 3} + m_PrefabInstance: {fileID: 1306806978} + m_PrefabAsset: {fileID: 0} +--- !u!43 &1313423074 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 372 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 64 + localAABB: + m_Center: {x: 0.0027185883, y: 0.016398204, z: 0.000027621165} + m_Extent: {x: 0.06139587, y: 0.060846984, z: 0.04430899} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 3a0023003f0003000b0017001100040018000a001100180012000f001b00070005001c0005000e001c0003000c001d00160010001e0011000a001f00190011001f000b00010020000c00030021000300180021000e001000220006001c0022001c000e00220010000e00230000001b00240005001a00250001000f0026000f001200260007001c0026001c00060026000a00180027001400130028002000010028000100260028002600140028001b000f002a000d0024002a0024001b002a00130006002b0017000b002b00060022002b000b0003002c0003001d002c001e0008002d0016001e002d00080019002e0019001f002e002d0008002e0016002d002e00020011002f00110019002f00090024002f0024000d002f00250009002f0002000f00300004001100300011000200300015000800310008001e0031001e00100031001000230031002300150031000500070032001a000500320012001a0032000700260032002600120032000b002000330028001300330020002800330013002b0033002b000b0033001a001200340025001a0034000900250034002900090034001200290034001000160035002200100035000a002700350027001700350017002b0035002b002200350001000b0036000b002c0036002c001d0036001b000000370012001b003700290012003700290037003800000024003800240009003800090029003800370000003800060013003900130014003900260006003900140026003900080015003a00190008003a00150023003a00050025003a002f0019003a0025002f003a000f0002003b000d002a003b002a000f003b0002002f003b002f000d003b000f0001003c00180004003c001d000c003c000c0021003c00210018003c00040030003c0030000f003c00010036003c0036001d003c001f000a003d0016002e003d002e001f003d000a0035003d00350016003d00030017003e00180003003e00170027003e00270018003e000e0005003f0023000e003f0005003a003f00 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 64 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 768 + _typelessdata: f08f793dba46343da421153c714e833ded0f36bdb25fe13b8228723cb39b873d35ed28bd839041bd7c4407bdaa2b06bd2213813d5d800bbce1b234bd2e7ed8bbb5c7823d4e9a353d0f3f4dbd8264c8bc781a1e3d87be803d2b5c0abc28c2343df0dc08bdba329e3dffe0d8bbfbcae43cee8c9c3d250aa33c9bed58bda9e07d3ce2ec34bd839041bd760736bdf705e7bb33d4803d8f1c10bd3345e5bcb000e53c7eae9c3d8c08a2bc9bed58bda9e07d3c147b353d1016803daf4f953c905228bd975770bd0233113d289fde3c7a21d9bb62f4823d616035bd6f657f3dc646953cc854283d839041bd3bf512bd7009f63c9d2e813db7c205bda20afd3c298ccfbcd7129e3df10abb3c975770bd0233113d6e6fddbc9bed58bd3bf512bd192c51bc0f3f4dbd1cbd55bce2ec34bdb00070bc41329e3dec07fcbca28d473c6d66883d25cf2a3d23ec7b3dccc32a3d38448abc0f3f4dbd1cbd55bc147b353dceaa823d009829bd31d38fbc975770bd6c52343d8d8b533cb454cebcd398873daf1413bdfbc173bc41d534bd0332493c807c803dc986ddbce80f13bd279c64bda089d5baf0c5293d554be5bc3f0a883dca4d093d7cf4073de6739c3dc54216bc8707de3ba54e9d3d918b083d0bb3813d25f988bcaa262b3d279c64bd308ea03abe3729bd4d81823de44629bdead0903cce3c133d4822873d69f1ce3caf7d133d4954873db729cebc9bed58bd3bf512bd8d8b533c2d7673bc539834bdc2a346bc975770bd6c52343d192c51bcc01813bd3bc1873d6309cfbc98a8723c0ad19d3d2e41fbbc1c41803d4053283cd37733bd93951ebda114883d3506a53cb46a7f3d2fd2283c6034333d839041bdb8562abdff86983cb79acf3c042e873df806133d975770bd0aa3f33c0cedf4bc584c833da20b36bd6ca0dcbbd6767b3d29912a3df92c8b3cf9b5073df7339c3dd74f183ccc64803db33fddbc0481133d7fb26fbcd5129e3d13e4fc3cb6e7cf3c885a873dc1b912bd08f9813d2b9889bc15fb2abd279c64bd0aa3f33c22d711bd9bed58bd8264c8bcaa2b06bdee7da3bcaf00883d052b1f3d + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0.0027185883, y: 0.016398204, z: 0.000027621165} + m_Extent: {x: 0.06139587, y: 0.060846984, z: 0.04430899} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &1316688961 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1316688962} + - component: {fileID: 1316688963} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1316688962 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1316688961} + m_LocalRotation: {x: -0.00000004214682, y: 3.552712e-15, z: 1.4210848e-14, w: 1} + m_LocalPosition: {x: -0.00000006310499, y: -0.0000000038160555, z: -0.00000005960469} + m_LocalScale: {x: 0.07, y: 0.0075, z: 0.03} + m_Children: + - {fileID: 287796486} + m_Father: {fileID: 2068166491} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1316688963 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1316688961} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1c0c8ba1123c5f949b20e50d5dd6afe4, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 0 +--- !u!1 &1354105686 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1354105687} + - component: {fileID: 1354105688} + m_Layer: 0 + m_Name: Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1354105687 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1354105686} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.000000014901161, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 82561609} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1354105688 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1354105686} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e9090ae501ff9cd459bec5271d40249c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1368358684 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1368358685} + - component: {fileID: 1368358686} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1368358685 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1368358684} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.00000002235175, y: -0.00000002048909, z: -0.000000029802315} + m_LocalScale: {x: 0.9999999, y: 1.0000001, z: 1} + m_Children: + - {fileID: 996931671} + m_Father: {fileID: 1271465853} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1368358686 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1368358684} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1c0c8ba1123c5f949b20e50d5dd6afe4, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!1 &1372997294 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1372997295} + - component: {fileID: 1372997296} + m_Layer: 0 + m_Name: Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1372997295 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1372997294} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 745613285} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1372997296 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1372997294} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e9090ae501ff9cd459bec5271d40249c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1373623301 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1373623302} + - component: {fileID: 1373623303} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1373623302 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1373623301} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1409556076} + m_Father: {fileID: 418190226} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1373623303 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1373623301} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1c0c8ba1123c5f949b20e50d5dd6afe4, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!1 &1395448826 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1395448827} + - component: {fileID: 1395448828} + m_Layer: 0 + m_Name: Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1395448827 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1395448826} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.000000011175874, y: -0.000000009313224, z: -0.000000014901165} + m_LocalScale: {x: 0.99999976, y: 1.0000001, z: 1} + m_Children: + - {fileID: 1491597150} + m_Father: {fileID: 377676475} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1395448828 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1395448826} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e9090ae501ff9cd459bec5271d40249c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1406488542 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1011804503} + m_Modifications: + - target: {fileID: 5533896806660921553, guid: 88bc7daacf6b5441daefaa5ef894fde7, type: 3} + propertyPath: m_Name + value: wrist1 + objectReference: {fileID: 0} + - target: {fileID: 8267164562253609505, guid: 88bc7daacf6b5441daefaa5ef894fde7, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8267164562253609505, guid: 88bc7daacf6b5441daefaa5ef894fde7, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8267164562253609505, guid: 88bc7daacf6b5441daefaa5ef894fde7, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8267164562253609505, guid: 88bc7daacf6b5441daefaa5ef894fde7, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8267164562253609505, guid: 88bc7daacf6b5441daefaa5ef894fde7, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8267164562253609505, guid: 88bc7daacf6b5441daefaa5ef894fde7, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8267164562253609505, guid: 88bc7daacf6b5441daefaa5ef894fde7, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8267164562253609505, guid: 88bc7daacf6b5441daefaa5ef894fde7, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8267164562253609505, guid: 88bc7daacf6b5441daefaa5ef894fde7, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8267164562253609505, guid: 88bc7daacf6b5441daefaa5ef894fde7, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8267164562253609505, guid: 88bc7daacf6b5441daefaa5ef894fde7, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 6894958860564788961, guid: 88bc7daacf6b5441daefaa5ef894fde7, type: 3} + - {fileID: 1784549650202618431, guid: 88bc7daacf6b5441daefaa5ef894fde7, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: 88bc7daacf6b5441daefaa5ef894fde7, type: 3} +--- !u!4 &1406488543 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8267164562253609505, guid: 88bc7daacf6b5441daefaa5ef894fde7, type: 3} + m_PrefabInstance: {fileID: 1406488542} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1406488544 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1620801263676132327, guid: 88bc7daacf6b5441daefaa5ef894fde7, type: 3} + m_PrefabInstance: {fileID: 1406488542} + m_PrefabAsset: {fileID: 0} +--- !u!64 &1406488545 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1406488544} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 1072107331} +--- !u!1001 &1409556075 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1373623302} + m_Modifications: + - target: {fileID: 1310606064810954953, guid: 113788cec5a094313a44f6e7bd62c7e3, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1310606064810954953, guid: 113788cec5a094313a44f6e7bd62c7e3, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1310606064810954953, guid: 113788cec5a094313a44f6e7bd62c7e3, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1310606064810954953, guid: 113788cec5a094313a44f6e7bd62c7e3, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1310606064810954953, guid: 113788cec5a094313a44f6e7bd62c7e3, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1310606064810954953, guid: 113788cec5a094313a44f6e7bd62c7e3, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1310606064810954953, guid: 113788cec5a094313a44f6e7bd62c7e3, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1310606064810954953, guid: 113788cec5a094313a44f6e7bd62c7e3, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1310606064810954953, guid: 113788cec5a094313a44f6e7bd62c7e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1310606064810954953, guid: 113788cec5a094313a44f6e7bd62c7e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1310606064810954953, guid: 113788cec5a094313a44f6e7bd62c7e3, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7353406852206585697, guid: 113788cec5a094313a44f6e7bd62c7e3, type: 3} + propertyPath: m_Name + value: shoulder + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 6601382161672540776, guid: 113788cec5a094313a44f6e7bd62c7e3, type: 3} + - {fileID: 339710687029608993, guid: 113788cec5a094313a44f6e7bd62c7e3, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: 113788cec5a094313a44f6e7bd62c7e3, type: 3} +--- !u!4 &1409556076 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1310606064810954953, guid: 113788cec5a094313a44f6e7bd62c7e3, type: 3} + m_PrefabInstance: {fileID: 1409556075} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1409556077 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 2841191886910460436, guid: 113788cec5a094313a44f6e7bd62c7e3, type: 3} + m_PrefabInstance: {fileID: 1409556075} + m_PrefabAsset: {fileID: 0} +--- !u!64 &1409556078 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1409556077} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 907353447} +--- !u!1 &1433821735 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1433821736} + - component: {fileID: 1433821740} + - component: {fileID: 1433821739} + - component: {fileID: 1433821738} + - component: {fileID: 1433821737} + m_Layer: 0 + m_Name: left_inner_knuckle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1433821736 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1433821735} + m_LocalRotation: {x: 0.000000081530494, y: -0.000000036693056, z: -0.9119034, w: 0.41040498} + m_LocalPosition: {x: 0.01269997, y: 0.06142001, z: -0.000000027939677} + m_LocalScale: {x: 0.99999964, y: 1.0000002, z: 0.9999999} + m_Children: + - {fileID: 501508469} + - {fileID: 964811038} + m_Father: {fileID: 582384526} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1433821737 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1433821735} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 63b6193734b4c8444bcfdf4e9953fe2b, type: 3} + m_Name: + m_EditorClassIdentifier: + xAxis: 0 + jointName: left_inner_knuckle_joint + EffortLimit: 1000 + VelocityLimit: 1000 +--- !u!114 &1433821738 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1433821735} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7631001c063f69d4495bca90731abab2, type: 3} + m_Name: + m_EditorClassIdentifier: + displayInertiaGizmo: 0 + useUrdfData: 1 + centerOfMass: {x: -0.050785083, y: 0.0010396864, z: 0.00012301184} + inertiaTensor: {x: 0.000002813192, y: 0.000026193562, z: 0.000028380893} + inertiaTensorRotation: {x: -0.011117614, y: -0.7072224, z: -0.7068938, w: -0.0037429775} + inertialAxisRotation: {x: 0, y: 0, z: 0, w: 1} +--- !u!171741748 &1433821739 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1433821735} + m_Enabled: 1 + m_Mass: 0.027117735 + m_ParentAnchorPosition: {x: 0.01269997, y: 0.06142001, z: -0.00000004284084} + m_ParentAnchorRotation: {x: 0.6448133, y: 0.29020026, z: -0.6448133, w: 0.29020026} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_ComputeParentAnchor: 1 + m_ArticulationJointType: 2 + m_LinearX: 1 + m_LinearY: 0 + m_LinearZ: 0 + m_SwingY: 2 + m_SwingZ: 2 + m_Twist: 1 + m_XDrive: + lowerLimit: -50.173916 + upperLimit: 50.173916 + stiffness: 0 + damping: 0 + forceLimit: 1000 + target: 0 + targetVelocity: 0 + m_YDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_ZDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0 + m_JointFriction: 0 + m_Immovable: 0 + m_UseGravity: 1 +--- !u!114 &1433821740 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1433821735} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fba5fd74d37a6cf4284698624eb8f6aa, type: 3} + m_Name: + m_EditorClassIdentifier: + IsBaseLink: 0 +--- !u!1 &1440197372 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1440197373} + - component: {fileID: 1440197374} + m_Layer: 0 + m_Name: Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1440197373 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1440197372} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1709504115} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1440197374 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1440197372} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e9090ae501ff9cd459bec5271d40249c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1446706345 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1446706346} + - component: {fileID: 1446706347} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1446706346 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1446706345} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.372505e-11, y: -7.1054206e-15, z: -0.000000029802322} + m_LocalScale: {x: 0.99999887, y: 1.0000011, z: 1} + m_Children: + - {fileID: 332214910} + m_Father: {fileID: 2013516727} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1446706347 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1446706345} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1c0c8ba1123c5f949b20e50d5dd6afe4, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!1 &1455610888 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1455610889} + - component: {fileID: 1455610890} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1455610889 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1455610888} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.372505e-11, y: -7.1054206e-15, z: -0.000000029802322} + m_LocalScale: {x: 0.99999887, y: 1.0000011, z: 1} + m_Children: + - {fileID: 1168616020} + m_Father: {fileID: 1871186934} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1455610890 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1455610888} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b2685e7e7719cd43814f41f35664c0b, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!1 &1491597149 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1491597150} + - component: {fileID: 1491597151} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1491597150 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1491597149} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.00000002235175, y: -0.00000002048909, z: -0.000000029802315} + m_LocalScale: {x: 0.9999999, y: 1.0000001, z: 1} + m_Children: + - {fileID: 203940113} + m_Father: {fileID: 1395448827} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1491597151 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1491597149} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b2685e7e7719cd43814f41f35664c0b, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!1 &1497065042 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1497065043} + - component: {fileID: 1497065047} + - component: {fileID: 1497065046} + - component: {fileID: 1497065045} + - component: {fileID: 1497065044} + m_Layer: 0 + m_Name: wrist_2_link + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1497065043 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1497065042} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.08505, y: 0, z: 0} + m_LocalScale: {x: 1, y: 0.99999976, z: 0.99999976} + m_Children: + - {fileID: 651086952} + - {fileID: 1015651687} + - {fileID: 1002404875} + m_Father: {fileID: 958633842} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1497065044 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1497065042} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 63b6193734b4c8444bcfdf4e9953fe2b, type: 3} + m_Name: + m_EditorClassIdentifier: + xAxis: 0 + jointName: wrist_2_joint + EffortLimit: 1000 + VelocityLimit: 1000 +--- !u!114 &1497065045 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1497065042} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7631001c063f69d4495bca90731abab2, type: 3} + m_Name: + m_EditorClassIdentifier: + displayInertiaGizmo: 0 + useUrdfData: 1 + centerOfMass: {x: -0, y: 0.08535, z: 0} + inertiaTensor: {x: 0.002084999, y: 0.00225, z: 0.002084999} + inertiaTensorRotation: {x: 0, y: 0, z: 0, w: 1} + inertialAxisRotation: {x: 0, y: 0, z: 0, w: 1} +--- !u!171741748 &1497065046 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1497065042} + m_Enabled: 1 + m_Mass: 0.8 + m_ParentAnchorPosition: {x: -0.08505, y: 0, z: 0} + m_ParentAnchorRotation: {x: 0, y: 0, z: -0.7071069, w: 0.7071069} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071068} + m_ComputeParentAnchor: 1 + m_ArticulationJointType: 2 + m_LinearX: 1 + m_LinearY: 0 + m_LinearZ: 0 + m_SwingY: 2 + m_SwingZ: 2 + m_Twist: 1 + m_XDrive: + lowerLimit: -180 + upperLimit: 180 + stiffness: 0 + damping: 0 + forceLimit: 54 + target: 0 + targetVelocity: 0 + m_YDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_ZDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0 + m_JointFriction: 0 + m_Immovable: 0 + m_UseGravity: 1 +--- !u!114 &1497065047 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1497065042} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fba5fd74d37a6cf4284698624eb8f6aa, type: 3} + m_Name: + m_EditorClassIdentifier: + IsBaseLink: 0 +--- !u!43 &1518391477 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 372 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 64 + localAABB: + m_Center: {x: -0.040897563, y: -0.014163163, z: -0.0001609344} + m_Extent: {x: 0.047184244, y: 0.020383593, z: 0.013966536} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 35002d003f00010008000b000b0008000c0000000b000c001000030013000f000200160000000c00170002000f0017000c000800190017000c001900020017001900120009001a0003000d001b00130003001b000d0009001c00090012001c001b000d001c000a001b001c0007000f001f00130007001f00100013001f000f0016001f000b000400210001000b00210004001200210012001a0021001200040022000e00140023000a00150024001b000a00240013001b00240015001d00240009000d00250020001100250016000600260005001f0026001f00160026001d00150027000b000000280004000b00280000002200280022000400280011000600290006001600290014000e002a001e0014002a00070013002b001d0007002b00130024002b0024001d002b00030010002c00060011002c00180006002c00100018002c00200003002c00110020002c0014001e002d00290016002d001e0029002d00270015002e00220027002e001e0009002f00090025002f00250011002f00110029002f0029001e002f000000170030002200000030002700220030000500100031001f000500310010001f0031001c00120032000a001c00320010000500330006001800330018001000330005002600330026000600330008000100340001002100340021001900340023001400350014002d00350007001d0036001d002700360030001700360027003000360015000a0037001200220037002e001500370022002e0037003200120037000a00320037000d000300380003002000380020000d0038000d002000390025000d0039002000250039001a0009003a0009001e003a002a000e003a001e002a003a00190008003b00080034003b00340019003b00020019003c00190023003c00350002003c00230035003c000f0007003d0017000f003d00070036003d00360017003d00190021003e0021001a003e000e0023003e00230019003e003a000e003e001a003a003e00160002003f002d0016003f00020035003f00 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 64 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 768 + _typelessdata: 9067243bc2d4cb3bf16a493c865da3bd9184a5bcf5b04ebc9234aebd17f2d6bce430623cbe8635bc515980bcc0de10bc0087e53a82fcb23b330e5bbcad038bbcefbb8abc2fde383c72a7acbde6800dbdf16a493c702eb53b2c9108bb2fc8553c865da3bd9184a5bcf16a493c72a7acbd261d01bde87667bc702eb53b2c9108bb330e5bbc10df35bbc2d4cb3bf5b04ebc10df35bbc2d4cb3bf16a493c6c7210bcd8554fbc330e5bbc3c64b4bd17f2d6bcf5b04ebc0087e53a2caf6bbbe430623cbe8635bc515980bcbc980b3c72a7acbde6800dbdf5b04ebc9067243b74b0513be87667bc702eb53b2caf6bbbf16a493c3c64b4bd9a0cfcbcf16a493c7800ce3bfcff1f3bf5b04ebc511aabbd261d01bde430623c0087e53a846d513be430623cde4f9bbdb88706bdeb5f383cdbbcafbd0469c4bc2fc8553cdbbcafbd2628ddbce87667bc702eb53b2caf6bbbf5b04ebcc063a6ba5a1dc0bbe87667bc7800ce3bfcff1f3bf16a493c1cd7b2bd2d3804bdf5b04ebc10df35bb337c11bc2fc8553ceb739cbc015990bc46b83dbcdbbcafbd0469c4bc330e5bbc608a833b82fcb23bf5b04ebc3c64b4bd17f2d6bcf16a493c7800ce3b2c9108bbf5b04ebc511aabbdde650abd330e5bbc72b214bdfaedadbca615483c702eb53bfe8e813bf16a493c9067243bc2d4cb3bf5b04ebcdbbcafbdde650abdf16a493c3c64b4bd9a0cfcbcf5b04ebc7800ce3b2c9108bbf16a493cde4f9bbdb88706bdefa53dbc1cd7b2bd2d3804bdf16a493c702eb53bfe8e813bf5b04ebcdbbcafbdde650abdf5b04ebc608a833b82fcb23bf16a493cd3d740bc2d8a73bc0d1c3b3c608a833b5047aebae87667bceb739cbc015990bc4272383c01a3abbd6fb7b9bc1b5c42bc1cd7b2bdeadef5bc2fc8553c702eb53bfcff1f3b2fc8553c702eb53bfcff1f3b330e5bbc6dd340bc488a73bcd16340bc2d851abdca7db3bccba34cbc1cd7b2bdeadef5bc330e5bbc01a3abbd6fb7b9bc17163d3c1cd7b2bd17f2d6bc2fc8553c9067243ba8413abbe430623c1cd7b2bd66c4d0bc330e5bbc9234aebdeadef5bce430623c + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: -0.040897563, y: -0.014163163, z: -0.0001609344} + m_Extent: {x: 0.047184244, y: 0.020383593, z: 0.013966536} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &1519062817 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1519062818} + - component: {fileID: 1519062819} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1519062818 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1519062817} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 635677483} + m_Father: {fileID: 224222866} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1519062819 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1519062817} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1c0c8ba1123c5f949b20e50d5dd6afe4, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!1 &1539286626 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1539286627} + - component: {fileID: 1539286628} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1539286627 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1539286626} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1647685292} + m_Father: {fileID: 136668627} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1539286628 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1539286626} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b2685e7e7719cd43814f41f35664c0b, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!1 &1557562616 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1557562617} + - component: {fileID: 1557562621} + - component: {fileID: 1557562620} + - component: {fileID: 1557562619} + - component: {fileID: 1557562618} + m_Layer: 0 + m_Name: right_outer_finger + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1557562617 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1557562616} + m_LocalRotation: {x: -0.000000008592272, y: -0.00000003120703, z: 0, w: 1} + m_LocalPosition: {x: -0.018220041, y: 0.026001828, z: 0.000000028854547} + m_LocalScale: {x: 0.99999976, y: 1.0000004, z: 1.0000001} + m_Children: + - {fileID: 875612092} + - {fileID: 1840527074} + - {fileID: 334621409} + m_Father: {fileID: 1248956524} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1557562618 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1557562616} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 074632cab556f5b408839af8574308df, type: 3} + m_Name: + m_EditorClassIdentifier: + xAxis: 0 + jointName: right_outer_finger_joint + EffortLimit: 1000 + VelocityLimit: 1000 +--- !u!114 &1557562619 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1557562616} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7631001c063f69d4495bca90731abab2, type: 3} + m_Name: + m_EditorClassIdentifier: + displayInertiaGizmo: 0 + useUrdfData: 1 + centerOfMass: {x: -0.037390795, y: -0.020802742, z: 0.00030115855} + inertiaTensor: {x: 0.0000015959833, y: 0.000015251834, z: 0.000016230448} + inertiaTensorRotation: {x: 0.20687526, y: -0.6761315, z: -0.6762144, w: 0.20684034} + inertialAxisRotation: {x: 0, y: 0, z: 0, w: 1} +--- !u!171741748 &1557562620 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1557562616} + m_Enabled: 1 + m_Mass: 0.02261424 + m_ParentAnchorPosition: {x: -0.018220052, y: 0.026001818, z: 0.00000004375571} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0.707107, w: 0.707107} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068} + m_ComputeParentAnchor: 1 + m_ArticulationJointType: 0 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 2 + m_SwingZ: 2 + m_Twist: 2 + m_XDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_YDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_ZDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_Immovable: 0 + m_UseGravity: 1 +--- !u!114 &1557562621 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1557562616} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fba5fd74d37a6cf4284698624eb8f6aa, type: 3} + m_Name: + m_EditorClassIdentifier: + IsBaseLink: 0 +--- !u!43 &1566656009 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 222 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 39 + localAABB: + m_Center: {x: 0.031209935, y: 0.04544718, z: -0.033237018} + m_Extent: {x: 0.032698344, y: 0.024040543, z: 0.031730413} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 20000c002600020001000500010002000600030001000600040003000600020005000600050004000600030004000700050001000800070004000900050008000a000a0008000d00070009000f000900040012000e001200130004000500130005000a0013000a000e0013001200040013000d000000160009001000160010000d00160003000700170014000c00180014001800190000000d0019000d0008001900180000001900010003001a0003000b001a000b0011001a0011000b001b000b0015001b00100009001c00090012001c0012000e001c0007000f001d00000018001d001d0018001e000c0007001e0018000c001e0007001d001e0007000c001f00170007001f00150017001f0008001b0020001b00150020001f000c00200015001f0020000f000900210009001600210008000100220001001a0022001a001100220011001b0022001b00080022000b000300230015000b0023000300170023001700150023000a000d0024000e000a0024000d001000240010001c0024001c000e00240016000000250000001d0025001d000f0025000f00210025002100160025000c0014002600140019002600190008002600080020002600 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 39 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 468 + _typelessdata: 31bc463d9df0ce3cc87133bdc016c3baf85caf3ca50d85bd5fa032ba4439b43c1f0f16bbc016c3ba944f8e3dbc3143bd31bc463d944f8e3d4079c5ba58e2823df85caf3c4079c5bac016c3ba944f8e3d4079c5ba2735e03c944f8e3d10952bbdd263913cf85caf3c071c81bd11fa363d944f8e3d98aab9bc58e2823df85caf3c925575bc5248443c226d863df8144bbdfaabff3c9df0ce3cdf946abdba39663df85caf3ca40e0cbd45e07d3d8570ee3c925575bcd04c1f3d5b5e8a3d703804bd261e6e3da1abde3cf8f0e8bcd23f053c8570ee3c071c81bd31bc463d944f8e3db43b36bc58e2823da1abde3c0892afbb3b31273dba2bbf3cb0f152bda82ca13c9b9a1e3ddf946abd517e563da1abde3c98ce1bbda82ca13c944f8e3d04553bbda6152f3d9df0ce3cf8144bbd3b31273df85caf3cb0f152bdc016c3baba2bbf3ca50d85bd68a8813c9df0ce3c071c81bdba39663d0d7d263d21e4a9bcfaabff3c5b5e8a3dd4b123bdd275173d6835fe3cb0f152bd54bec03c226d863d04553bbd2735e03c9df0ce3c1a7872bda6152f3d226d863df8f0e8bc4c5ccb3bba2bbf3ca50d85bd24bf633c944f8e3dbc3143bd9002763dba2bbf3c802ad9bc31bc463d36f8063dd4b123bdb08a0f3df85caf3c27b862bd + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0.031209935, y: 0.04544718, z: -0.033237018} + m_Extent: {x: 0.032698344, y: 0.024040543, z: 0.031730413} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &1573113620 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1573113621} + - component: {fileID: 1573113636} + - component: {fileID: 1573113635} + - component: {fileID: 1573113634} + - component: {fileID: 1573113633} + - component: {fileID: 1573113632} + - component: {fileID: 1573113631} + - component: {fileID: 1573113630} + - component: {fileID: 1573113629} + - component: {fileID: 1573113628} + - component: {fileID: 1573113627} + - component: {fileID: 1573113626} + - component: {fileID: 1573113625} + - component: {fileID: 1573113624} + - component: {fileID: 1573113623} + - component: {fileID: 1573113622} + m_Layer: 0 + m_Name: Plugins + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1573113621 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1573113620} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 294812823} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1573113622 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1573113620} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76add797bdb1d8c4b8276633f6e67167, type: 3} + m_Name: + m_EditorClassIdentifier: + PluginText: "\n true\n" +--- !u!114 &1573113623 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1573113620} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76add797bdb1d8c4b8276633f6e67167, type: 3} + m_Name: + m_EditorClassIdentifier: + PluginText: "\n true\n" +--- !u!114 &1573113624 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1573113620} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76add797bdb1d8c4b8276633f6e67167, type: 3} + m_Name: + m_EditorClassIdentifier: + PluginText: "\n true\n" +--- !u!114 &1573113625 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1573113620} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76add797bdb1d8c4b8276633f6e67167, type: 3} + m_Name: + m_EditorClassIdentifier: + PluginText: "\n true\n" +--- !u!114 &1573113626 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1573113620} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76add797bdb1d8c4b8276633f6e67167, type: 3} + m_Name: + m_EditorClassIdentifier: + PluginText: "\n true\n" +--- !u!114 &1573113627 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1573113620} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76add797bdb1d8c4b8276633f6e67167, type: 3} + m_Name: + m_EditorClassIdentifier: + PluginText: "\n true\n" +--- !u!114 &1573113628 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1573113620} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76add797bdb1d8c4b8276633f6e67167, type: 3} + m_Name: + m_EditorClassIdentifier: + PluginText: "\n true\n" +--- !u!114 &1573113629 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1573113620} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76add797bdb1d8c4b8276633f6e67167, type: 3} + m_Name: + m_EditorClassIdentifier: + PluginText: "\n transmission_interface/SimpleTransmission\n + \n hardware_interface/PositionJointInterface\n + \n \n 1\n + \n" +--- !u!114 &1573113630 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1573113620} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76add797bdb1d8c4b8276633f6e67167, type: 3} + m_Name: + m_EditorClassIdentifier: + PluginText: "\n transmission_interface/SimpleTransmission\n + \n hardware_interface/PositionJointInterface\n + \n \n 1\n + \n" +--- !u!114 &1573113631 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1573113620} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76add797bdb1d8c4b8276633f6e67167, type: 3} + m_Name: + m_EditorClassIdentifier: + PluginText: "\n transmission_interface/SimpleTransmission\n + \n hardware_interface/PositionJointInterface\n + \n \n 1\n + \n" +--- !u!114 &1573113632 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1573113620} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76add797bdb1d8c4b8276633f6e67167, type: 3} + m_Name: + m_EditorClassIdentifier: + PluginText: "\n transmission_interface/SimpleTransmission\n + \n hardware_interface/PositionJointInterface\n + \n \n 1\n + \n" +--- !u!114 &1573113633 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1573113620} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76add797bdb1d8c4b8276633f6e67167, type: 3} + m_Name: + m_EditorClassIdentifier: + PluginText: "\n transmission_interface/SimpleTransmission\n + \n hardware_interface/PositionJointInterface\n + \n \n 1\n + \n" +--- !u!114 &1573113634 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1573113620} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76add797bdb1d8c4b8276633f6e67167, type: 3} + m_Name: + m_EditorClassIdentifier: + PluginText: "\n transmission_interface/SimpleTransmission\n + \n hardware_interface/PositionJointInterface\n + \n \n 1\n + \n" +--- !u!114 &1573113635 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1573113620} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76add797bdb1d8c4b8276633f6e67167, type: 3} + m_Name: + m_EditorClassIdentifier: + PluginText: "\n transmission_interface/SimpleTransmission\n + \n PositionJointInterface\n + \n \n 1\n + \n" +--- !u!114 &1573113636 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1573113620} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fae53a797b5479c43b9a3aeac7e35e5c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!43 &1580533937 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 372 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 64 + localAABB: + m_Center: {x: 0.00043502077, y: 0.0783125, z: 0.00042304024} + m_Extent: {x: 0.048085798, y: 0.008490812, z: 0.048085798} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 0f002a003f00120006001700010002001900050018001900080003001c0016000a001f00120016001f0008001c0020001c00100020001e000c0020000200010021000300040022002200040023000d002200230001001b0024001b000d0024002100010024002300070024000d00230024000e000300260005002500280025000f0028000a001600290018000500290003002200290005002800290028000a0029001f000a002a0012001f002a00040003002b00030014002b00150004002b00270015002b00110018002c001b0011002c00180029002c00290009002c00180011002d00190018002d00010019002d001b0001002d0011001b002d00170006002e0006001a002e00080020002f0020000c002f0003000e0030001c00030030001d00300031001a000000310013001a00310000001d0031000e002600310026001300310030000e00310003000800320014000300320008002f0032002f000c0032000c001e0033002b001400330027002b00330014003200330032000c0033000600120034001a00060034000f002100340021001a0034002a000f00340012002a0034000b00030035001a000b00350003002900350029001700350017002e0035002e001a0035000d001b0036002c00090036001b002c00360022000d0037000900290037002900220037003600090037000d003600370019000200380005001900380002002100380021000f0038002500050038000f002500380016001200390012001700390029001600390017002900390010001c003a001d0010003a001c0030003a0030001d003a0000001a003b0010001d003b001d0000003b00200010003b001e0020003b001a0021003b0021001e003b0003000b003c001a0013003c000b001a003c00260003003c00130026003c00150007003d00040015003d00070023003d00230004003d00070015003e001e0021003e00210024003e00240007003e00150027003e0033001e003e00270033003e000a0028003f0028000f003f002a000a003f00 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 64 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 768 + _typelessdata: 7066763cf8348f3d194c353dfd802dbc96198f3dea903abd25b7afbcd23b8f3d411f2abd342204bdf0c5b13dc8790f3de3fe1f3d473bb03d8ebf9abc4527d4bcd73ab03d231a0ebd93b739bd042c8f3deea53a3cac5e363d651c8f3d55da69bc2595113de03ab03d62d2cc3cf7e9843c703bb03d5eb423bd02ce2abda53ab03dc48c25bc0443c9bc2844923d58042f3d52cc3e3d2844923d3766813cb5c6ef3c2844923d76af23bddb53ba3bfd3ab03d654c2e3d2e6833bd2844923dfd8cb9bc0a1fe03c2844923da426273db6b1c2bad3249a3d063a43bd762d43bd2844923d4db7433c56c4edbb2844923d34b1463dde582e3dfb3ab03d45efb93b52cc3e3d2844923d321775bcd2d02abde83ab03d4048333ce6a223bd2844923d95adef3cf15d25bcf73ab03dffdd2abddd73b9bc2844923dbe7433bd47bd69bce81a8f3d0262363d8de9433c2844923d063a43bda6eccc3cf73ab03d6689113d577f813c2844923dc2bf3e3df3512f3da8118f3d944a9a3c762d43bdd3249a3db643c4ba58860f3d2844923dc8790f3ddec615bdadfe8e3d0d0befbc1430033df73ab03dd10df1bca04b1f3d2844923d1ea2f8bccdecc63c19228f3dcaa423bd7ce713bdd3249a3dc42e04bd2ed6d7bb0f3bb03d244d2e3dc4bd463d2844923d39ecaebb23090ebd583ab03dbe39d4bce9ff0bbdf0c5b13df2a5073d762d43bd2844923d110236bc485b2e3d343bb03dc93cd8bb1b7b333cf73ab03dfedd2abdd1cf35bc2844923d063a43bd1cf613bdf7328f3dfcfef23c7cf8363d9a33963dc8f0a03cde126d3cfb3ab03de326273d31bbca3b2844923d34b1463d7b32273de33ab03d45df6c3cc4bd463d2844923db156ca3b3c8e3abdb2188f3db8bc2dbcfe88f8bc2844923d103f1f3d51c5b03c9a33963dbe7433bdcc82be3c673bb03dc04d15bdd7b9e8bc2844923d76af23bd2e6833bd9a33963d31acb03ce809a13c9a33963deceb363d57699a3c06118f3de04b2f3df2e474bc2844923dc2bf3e3d7cf8363d2844923d93d1a9bcbb693e3dee118f3dacf0a6bbe3453bbd9a33963d03478abc + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0.00043502077, y: 0.0783125, z: 0.00042304024} + m_Extent: {x: 0.048085798, y: 0.008490812, z: 0.048085798} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &1584387101 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1584387102} + - component: {fileID: 1584387103} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1584387102 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1584387101} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.372505e-11, y: -7.1054206e-15, z: -0.000000029802322} + m_LocalScale: {x: 0.99999887, y: 1.0000011, z: 1} + m_Children: + - {fileID: 1702127120} + m_Father: {fileID: 501508469} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1584387103 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1584387101} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b2685e7e7719cd43814f41f35664c0b, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!1 &1619744093 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1619744094} + - component: {fileID: 1619744097} + - component: {fileID: 1619744096} + - component: {fileID: 1619744095} + m_Layer: 0 + m_Name: right_inner_finger_pad + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1619744094 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1619744093} + m_LocalRotation: {x: -0.00000006384568, y: 0.000000017660604, z: 0.00000005960463, w: 1} + m_LocalPosition: {x: -0.0457555, y: -0.02722026, z: 0.00000002228759} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1899499214} + - {fileID: 1832673846} + m_Father: {fileID: 334621409} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1619744095 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1619744093} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 074632cab556f5b408839af8574308df, type: 3} + m_Name: + m_EditorClassIdentifier: + xAxis: 0 + jointName: right_inner_finger_pad_joint + EffortLimit: 1000 + VelocityLimit: 1000 +--- !u!171741748 &1619744096 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1619744093} + m_Enabled: 1 + m_Mass: 1 + m_ParentAnchorPosition: {x: -0.045755547, y: -0.027220264, z: 0.000000029738171} + m_ParentAnchorRotation: {x: -0.000000042105693, y: 0.000000042105693, z: 0.707107, w: 0.707107} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068} + m_ComputeParentAnchor: 1 + m_ArticulationJointType: 0 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 2 + m_SwingZ: 2 + m_Twist: 2 + m_XDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_YDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_ZDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_Immovable: 0 + m_UseGravity: 1 +--- !u!114 &1619744097 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1619744093} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fba5fd74d37a6cf4284698624eb8f6aa, type: 3} + m_Name: + m_EditorClassIdentifier: + IsBaseLink: 0 +--- !u!43 &1628185143 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 306 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 53 + localAABB: + m_Center: {x: -0.00013801455, y: 0.1310577, z: 0.00008605793} + m_Extent: {x: 0.03283887, y: 0.045975536, z: 0.03281067} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 2c002f003400020001000300030006000e000600030010000300010015000800040015000000080016000800120016000c0006001700060010001700150001001700080015001700000016001800160011001800120008001a00160012001a0004000d001b00040008001e000d0004001e00000018001e00100003001f00040011001f00070013001f00160010001f00110016001f00190007001f0015000b0020000f00150020000a00180021001800110021001b000a00210003001500220015000f0022000f00190022001f000300220019001f00220017001000240013000b0025001500040025000b001500250004001f0025001f00130025000a000d00260018000a0026000d001e0026001e001800260002001d0027001d000e00270008001700280009001a0028001a000800280017002400280024000500280002000300290003000e0029001d00020029000e001d002900010002002a0006000c002a00170001002a000c0017002a00230006002a00020027002a00270014002a0019000f002b000b0019002b0020000b002b000f0020002b00100016002c001c0005002c00240010002c00050024002c000b0013002d0019000b002d00110004002e0004001b002e00210011002e001b0021002e001a0009002f0016001a002f002c0016002f000e000600300006002300300014002700300027000e00300023002a0030002a00140030000d000a0031001b000d0031000a001b0031001300070032000700190032002d001300320019002d00320008000000330000001e0033001e000800330005001c0034000900280034002800050034001c002c0034002f0009003400 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 53 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 636 + _typelessdata: 3038043d72ba343e3281d63b9ce906bd3680ae3d35e87cbb6b63f6bce037af3d3f4e69bceea006bd0e1b353ee25c7cbbfe8c763baa8eae3dba71063d9b8d9d3c65c4af3d13e7ddbc238cd9bb30b7343e1b9204bd7eb36abce864343e853cf33c55f1053d8e3fae3d4f08833bede8dc3ccb86343e482c9ebcf1a09c3c5d4d343eecaadd3cbd68cbbca562af3d7d56b53c8d36dabb2730af3dc8fc04bd736cc93c1e19af3d50e5b53c5f2ab5bcd484343eff83c8bc118bf4bccc7e343eb7a8693c3261d03b51fe343e615d05bd1157963af638353e2c93063da2e0043d68feae3d3452d3bb6f656cbcb272af3d5d02f53cce2c9fbcf157b03df384dcbcc51207bd6763ae3d4bd7823b3cc3043d1aeb343e3123d3bb37d7763b9173ae3d3e0a06bdb01ef33c8eb8343e04cb6a3c2847b6bc23ce343e79d1ca3ced1bf43cbe17af3d089f69bcf800673c6384af3dddd3f43cf3c49c3cde57343e21cedcbca86eddbc7417343e92ae9cbc43c4f43cb6d7ae3d055e6c3ca1ff85bb3348353eb8be063d15bcf4bcf1d8af3d95d7693c8648663cb88d343e0b13f43c51b506bd3022353ede7d823be3b26abcc964343eb42cf2bc0c3b683c7707af3d2c0df5bc106485bb8ecaae3d271c063debd6db3cb54d343ec9779e3cbe37cbbc3679af3d911bb4bc06a0c93c5e01af3d6b04b5bc9792f4bc3b80343e9a9167bc6e146dbc102daf3d56aaf4bc7460ddbc7e14343eb2b39d3ce0fb673c4ce4343e1ecbf4bc38e89ebcf77fb03d2034dd3c9009ce3b681f123e9874043da882f33c92cb343e720c69bc635b9fbc3756343e32c6dcbc231c9c3cef9bb03d05f1dc3c13dc9ebc1131343e1f23dd3cafb6043da576b43d464bd73b2b72b33c77bf343eae82c9bc + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: -0.00013801455, y: 0.1310577, z: 0.00008605793} + m_Extent: {x: 0.03283887, y: 0.045975536, z: 0.03281067} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1001 &1647685291 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1539286627} + m_Modifications: + - target: {fileID: -8679921383154817045, guid: a370e6ab0133746bba60f9746d040796, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: a370e6ab0133746bba60f9746d040796, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: a370e6ab0133746bba60f9746d040796, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: a370e6ab0133746bba60f9746d040796, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: a370e6ab0133746bba60f9746d040796, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: a370e6ab0133746bba60f9746d040796, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: a370e6ab0133746bba60f9746d040796, type: 3} + propertyPath: m_LocalRotation.y + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: a370e6ab0133746bba60f9746d040796, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: a370e6ab0133746bba60f9746d040796, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: a370e6ab0133746bba60f9746d040796, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: a370e6ab0133746bba60f9746d040796, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -7264643304161535556, guid: a370e6ab0133746bba60f9746d040796, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: -4286396916692950121, guid: a370e6ab0133746bba60f9746d040796, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: 55291342286754144, guid: a370e6ab0133746bba60f9746d040796, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: 919132149155446097, guid: a370e6ab0133746bba60f9746d040796, type: 3} + propertyPath: m_Name + value: wrist1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: a370e6ab0133746bba60f9746d040796, type: 3} +--- !u!4 &1647685292 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: a370e6ab0133746bba60f9746d040796, type: 3} + m_PrefabInstance: {fileID: 1647685291} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1689329239 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1689329240} + - component: {fileID: 1689329243} + - component: {fileID: 1689329242} + - component: {fileID: 1689329241} + m_Layer: 0 + m_Name: left_inner_finger_pad + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1689329240 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1689329239} + m_LocalRotation: {x: -0.00000006384568, y: 0.000000017660607, z: 0.00000005960463, w: 1} + m_LocalPosition: {x: -0.045755506, y: -0.027220381, z: -0.00000004476762} + m_LocalScale: {x: 0.9999999, y: 0.99999976, z: 0.9999999} + m_Children: + - {fileID: 2114151218} + - {fileID: 2068166491} + m_Father: {fileID: 377676475} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1689329241 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1689329239} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 074632cab556f5b408839af8574308df, type: 3} + m_Name: + m_EditorClassIdentifier: + xAxis: 0 + jointName: left_inner_finger_pad_joint + EffortLimit: 1000 + VelocityLimit: 1000 +--- !u!171741748 &1689329242 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1689329239} + m_Enabled: 1 + m_Mass: 1 + m_ParentAnchorPosition: {x: -0.045755535, y: -0.027220374, z: -0.00000005966878} + m_ParentAnchorRotation: {x: -0.000000042105693, y: 0.000000042105693, z: 0.707107, w: 0.707107} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068} + m_ComputeParentAnchor: 1 + m_ArticulationJointType: 0 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 2 + m_SwingZ: 2 + m_Twist: 2 + m_XDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_YDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_ZDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_Immovable: 0 + m_UseGravity: 1 +--- !u!114 &1689329243 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1689329239} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fba5fd74d37a6cf4284698624eb8f6aa, type: 3} + m_Name: + m_EditorClassIdentifier: + IsBaseLink: 0 +--- !u!1001 &1702127119 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1584387102} + m_Modifications: + - target: {fileID: 617801170161415482, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 3b0e2ceb0b7d245f185a3ccd43540485, type: 2} + - target: {fileID: 2498813151693771060, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_Name + value: robotiq_arg2f_140_inner_knuckle + objectReference: {fileID: 0} + - target: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_LocalScale.x + value: 0.9999978 + objectReference: {fileID: 0} + - target: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_LocalScale.y + value: 1.0000023 + objectReference: {fileID: 0} + - target: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_LocalPosition.x + value: 1.18634295e-11 + objectReference: {fileID: 0} + - target: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_LocalPosition.y + value: -7.1054134e-15 + objectReference: {fileID: 0} + - target: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_LocalPosition.z + value: -0.000000014901167 + objectReference: {fileID: 0} + - target: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 451c61199293e4b849190a10b7069f97, type: 3} +--- !u!4 &1702127120 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7317541784530972451, guid: 451c61199293e4b849190a10b7069f97, type: 3} + m_PrefabInstance: {fileID: 1702127119} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1704117253 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1704117254} + - component: {fileID: 1704117255} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1704117254 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1704117253} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1845663275} + m_Father: {fileID: 1270630917} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1704117255 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1704117253} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b2685e7e7719cd43814f41f35664c0b, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!1001 &1705429457 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 493494363} + m_Modifications: + - target: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_LocalScale.x + value: 0.9999999 + objectReference: {fileID: 0} + - target: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_LocalScale.y + value: 1.0000002 + objectReference: {fileID: 0} + - target: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_LocalPosition.x + value: -0.000000011153523 + objectReference: {fileID: 0} + - target: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_LocalPosition.y + value: -0.0000000098814725 + objectReference: {fileID: 0} + - target: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_LocalPosition.z + value: 0.000000014901161 + objectReference: {fileID: 0} + - target: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3667646430467322617, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + propertyPath: m_Name + value: robotiq_arg2f_140_outer_finger + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 2263742742463502134, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + - {fileID: 1197306017795833829, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} +--- !u!4 &1705429458 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2310640961755516453, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + m_PrefabInstance: {fileID: 1705429457} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1705429459 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 7080858345236482477, guid: d9622a29825e04a468db5ebc27dc991d, type: 3} + m_PrefabInstance: {fileID: 1705429457} + m_PrefabAsset: {fileID: 0} +--- !u!64 &1705429460 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1705429459} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 1518391477} +--- !u!1 &1709504114 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1709504115} + - component: {fileID: 1709504118} + - component: {fileID: 1709504117} + - component: {fileID: 1709504116} + m_Layer: 0 + m_Name: base + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1709504115 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1709504114} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.00000004371139} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1440197373} + - {fileID: 1934719631} + m_Father: {fileID: 859020023} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1709504116 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1709504114} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 074632cab556f5b408839af8574308df, type: 3} + m_Name: + m_EditorClassIdentifier: + xAxis: 0 + jointName: base_link-base_fixed_joint + EffortLimit: 1000 + VelocityLimit: 1000 +--- !u!171741748 &1709504117 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1709504114} + m_Enabled: 1 + m_Mass: 1 + m_ParentAnchorPosition: {x: 0, y: 0, z: 0} + m_ParentAnchorRotation: {x: 0.70710677, y: 0.70710677, z: -0.00000003090862, w: -0.00000003090862} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0.70710677, w: 0.70710677} + m_ComputeParentAnchor: 1 + m_ArticulationJointType: 0 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 2 + m_SwingZ: 2 + m_Twist: 2 + m_XDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_YDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_ZDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_Immovable: 0 + m_UseGravity: 1 +--- !u!114 &1709504118 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1709504114} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fba5fd74d37a6cf4284698624eb8f6aa, type: 3} + m_Name: + m_EditorClassIdentifier: + IsBaseLink: 0 +--- !u!1 &1739443086 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1739443087} + - component: {fileID: 1739443090} + - component: {fileID: 1739443089} + - component: {fileID: 1739443088} + m_Layer: 0 + m_Name: tool0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1739443087 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1739443086} + m_LocalRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068} + m_LocalPosition: {x: -0.0819, y: 0.000000029802322, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 435471057} + - {fileID: 349382769} + - {fileID: 582384526} + m_Father: {fileID: 1002404875} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1739443088 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1739443086} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 074632cab556f5b408839af8574308df, type: 3} + m_Name: + m_EditorClassIdentifier: + xAxis: 0 + jointName: wrist_3_link-tool0_fixed_joint + EffortLimit: 1000 + VelocityLimit: 1000 +--- !u!171741748 &1739443089 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1739443086} + m_Enabled: 1 + m_Mass: 1 + m_ParentAnchorPosition: {x: -0.0819, y: 0.000000044703484, z: 0} + m_ParentAnchorRotation: {x: 0, y: 0, z: 1.0000002, w: 0} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068} + m_ComputeParentAnchor: 1 + m_ArticulationJointType: 0 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 2 + m_SwingZ: 2 + m_Twist: 2 + m_XDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_YDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_ZDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_Immovable: 0 + m_UseGravity: 1 +--- !u!114 &1739443090 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1739443086} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fba5fd74d37a6cf4284698624eb8f6aa, type: 3} + m_Name: + m_EditorClassIdentifier: + IsBaseLink: 0 +--- !u!1001 &1741854939 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1182380623} + m_Modifications: + - target: {fileID: 143021706204641135, guid: 93ed2c75abc954db1afc9d502cd60e77, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 143021706204641135, guid: 93ed2c75abc954db1afc9d502cd60e77, type: 3} + propertyPath: m_LocalScale.x + value: 0.99999964 + objectReference: {fileID: 0} + - target: {fileID: 143021706204641135, guid: 93ed2c75abc954db1afc9d502cd60e77, type: 3} + propertyPath: m_LocalScale.y + value: 0.99999964 + objectReference: {fileID: 0} + - target: {fileID: 143021706204641135, guid: 93ed2c75abc954db1afc9d502cd60e77, type: 3} + propertyPath: m_LocalScale.z + value: 1.0000007 + objectReference: {fileID: 0} + - target: {fileID: 143021706204641135, guid: 93ed2c75abc954db1afc9d502cd60e77, type: 3} + propertyPath: m_LocalPosition.x + value: 0.000000014901174 + objectReference: {fileID: 0} + - target: {fileID: 143021706204641135, guid: 93ed2c75abc954db1afc9d502cd60e77, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 143021706204641135, guid: 93ed2c75abc954db1afc9d502cd60e77, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 143021706204641135, guid: 93ed2c75abc954db1afc9d502cd60e77, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 143021706204641135, guid: 93ed2c75abc954db1afc9d502cd60e77, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 143021706204641135, guid: 93ed2c75abc954db1afc9d502cd60e77, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 143021706204641135, guid: 93ed2c75abc954db1afc9d502cd60e77, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 143021706204641135, guid: 93ed2c75abc954db1afc9d502cd60e77, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 143021706204641135, guid: 93ed2c75abc954db1afc9d502cd60e77, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 143021706204641135, guid: 93ed2c75abc954db1afc9d502cd60e77, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4886870499752465359, guid: 93ed2c75abc954db1afc9d502cd60e77, type: 3} + propertyPath: m_Name + value: robotiq_arg2f_base_link + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 6788818318948861764, guid: 93ed2c75abc954db1afc9d502cd60e77, type: 3} + - {fileID: 678513863175187779, guid: 93ed2c75abc954db1afc9d502cd60e77, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: 93ed2c75abc954db1afc9d502cd60e77, type: 3} +--- !u!4 &1741854940 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 143021706204641135, guid: 93ed2c75abc954db1afc9d502cd60e77, type: 3} + m_PrefabInstance: {fileID: 1741854939} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1741854941 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 2834650572841522723, guid: 93ed2c75abc954db1afc9d502cd60e77, type: 3} + m_PrefabInstance: {fileID: 1741854939} + m_PrefabAsset: {fileID: 0} +--- !u!64 &1741854942 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1741854941} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 319820692} +--- !u!1 &1751193718 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1751193719} + - component: {fileID: 1751193720} + m_Layer: 0 + m_Name: Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1751193719 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1751193718} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.000000011175875, y: -0.00000000931322, z: 0.000000014901163} + m_LocalScale: {x: 0.99999976, y: 1.0000001, z: 1} + m_Children: + - {fileID: 1802392972} + m_Father: {fileID: 334621409} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1751193720 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1751193718} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e9090ae501ff9cd459bec5271d40249c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!43 &1765474288 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 372 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 64 + localAABB: + m_Center: {x: -0.0064557046, y: 0.005983942, z: -0.000088490546} + m_Extent: {x: 0.026241325, y: 0.026306223, z: 0.01239988} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 210031003f00080007000e0004000a00110004001100150011000d0015000500070016000a000400170004000f0017000f000600170006000f001a000f0018001a001a0010001c000c0019001d000d0011001e00030013001e0013001b001e00130003001f001b0013001f000e000b00200009000c0021001500090021000500160022001900050022001d00190022000400020023000f000400230002001200230018000f00230012001800230007000800240016000700240015000d00250003001e0026001e001100260010001200270014001c0027001c00100027000100000028000e000100280008000e0028000b000300290006000b002900170006002900050019002a0019001b002a00180012002b001a0018002b000b0006002c0020000b002c001b0019002d00000001002e00220000002e00140022002e0003000b002f001f0003002f001f002f0030000700050030000b000700300005002a0030002f000b00300012000200310021000c0031000d001e0032001e001b00320025000d0032002d00090032001b002d00320007000b0033000e00070033000b000e00330001000e0034000e00200034002c000600340020002c0034000900150035001500250035003200090035002500320035001c00140036001a001c0036002e000100360014002e00360011000a0037000a00170037000300260037002600110037002900030037001700290037000c000900380019000c00380009002d0038002d00190038001b001f0039002a001b0039001f003000390030002a003900120010003a0010001a003a002b0012003a001a002b003a000c001d003b001d0012003b00120031003b0031000c003b00000022003c00220016003c00240008003c00160024003c00280000003c00080028003c0006001a003d00010034003d00340006003d00360001003d001a0036003d0012001d003e00220014003e001d0022003e00270012003e00140027003e00020004003f00040015003f00150021003f00310002003f00 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 64 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 768 + _typelessdata: 52ed05bd6e1a973c9b80a3bb52ed05bd6e1a973cfbb39d3b7bd382bcb142043d9b80a3bb7415a23c40f29bbcfbb39d3bccb672bc9adf013dfbb39d3b767bacbc27ec1a3cc0883cbc9ea7c9bc3f4b463cb6b5493cebe1533c0b32a3bc02ec9abb6e4ee1bc40e8293c2a6fb6bb9c276e3bbc1e173b88da13bcef7c233c780663bb7d45e93beac0503c7d25a1bc0aa0933bb05fadbc19a48d3c069c4cbcb8e6933c90212abc9b80a3bb6e4ee1bc40e8293c8aa2b03b439ea8bceee8883cb6b5493cded4e7bc5a2dd23cd21c973bb8e6933c90212abcfbb39d3b439ea8bc9adf013d2a6fb6bb7415a23c40f29bbc9b80a3bb488100bdd149bd3ccdd99ebb7d4969bc0d0fff3c9b80a3bbb21fd3bc3f4b463c77ad39bcc0ceaf3b004b163a1f87073c8c9aa3bc8200ff3c92be963b8b3994bc28321c3c252f40bc9ea7c9bce384753cb6b5493c609d983cc1c08dbccd5ab6bbc345ffbc060fbc3c59b9973b3ac2b6bc19a48d3c069c4cbc08549d3ce4fa4fbc9b80a3bbaaa8873ce97aa6bc5e5e9dbbb21fd3bc955e333cae751a3cdfb895bcbfe8bc3cfe5b1dbcb21fd3bcea37593cbf2443bc7bd382bcb142043dfbb39d3b5ad6d7bc40e8293c560001bca46e8a3ceb4a17bccd5ab6bb08549d3ce4fa4fbcfbb39d3baa93e9bc34cad33cfd699ebb9b8c03bd19a48d3c2a6fb6bb4a258f3c991089bc2d8eb03b491873bc48d8983b42312ebc38c3acbcfaacfa3cabec963b0a69cebcead43c3c27c7363c31a5653ce49733bc8e23dcbbf3d302bd491eb43c27df9ebb1e8f833caae2a1bce035943b44a3613cd04fa6bcdc3e9dbb228a87bc9adf013d2a6fb6bbb8e6933c3a0e3dbccd5ab6bba031393c39c598bcc5ae903be8abfdbceee8883c4b6bd63b07b5523cda09bdbb8e23dcbb74fd01bd4808b33c08d2973b5b95783ceb4a17bcbc7cc33bdd268bbc08ce243c81b13fbc7d815a3c69d498bc0ebaabbb72f1c7bc7c9be83c10f0963b9ce7a3bce4f0dd3c560001bc473101bdeee8883c5c49c9bb2c7defbcc42d843c1f87073c8cd5fabc7f21bc3c66d6afbbccb672bc9adf013d9b80a3bb + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: -0.0064557046, y: 0.005983942, z: -0.000088490546} + m_Extent: {x: 0.026241325, y: 0.026306223, z: 0.01239988} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &1794209837 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1794209838} + - component: {fileID: 1794209842} + - component: {fileID: 1794209841} + - component: {fileID: 1794209840} + - component: {fileID: 1794209839} + m_Layer: 0 + m_Name: left_outer_knuckle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1794209838 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1794209837} + m_LocalRotation: {x: 0.000000081530494, y: -0.000000036693056, z: -0.9119034, w: 0.41040498} + m_LocalPosition: {x: 0.030601047, y: 0.054905012, z: -0.000000026077032} + m_LocalScale: {x: 0.99999964, y: 1.0000002, z: 0.9999999} + m_Children: + - {fileID: 1871186934} + - {fileID: 1289901342} + - {fileID: 1240013164} + m_Father: {fileID: 582384526} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1794209839 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1794209837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 63b6193734b4c8444bcfdf4e9953fe2b, type: 3} + m_Name: + m_EditorClassIdentifier: + xAxis: 0 + jointName: finger_joint + EffortLimit: 1000 + VelocityLimit: 1000 +--- !u!114 &1794209840 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1794209837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7631001c063f69d4495bca90731abab2, type: 3} + m_Name: + m_EditorClassIdentifier: + displayInertiaGizmo: 0 + useUrdfData: 1 + centerOfMass: {x: -0.019943587, y: 0.029224526, z: -0.0002} + inertiaTensor: {x: 0.000001, y: 0.0000028040658, z: 0.0000028932823} + inertiaTensorRotation: {x: 0.8970799, y: -0.44186842, z: -2.4389198e-13, w: 3.8678736e-13} + inertialAxisRotation: {x: 0, y: 0, z: 0, w: 1} +--- !u!171741748 &1794209841 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1794209837} + m_Enabled: 1 + m_Mass: 0.008531983 + m_ParentAnchorPosition: {x: 0.030601047, y: 0.054905027, z: -0.000000040978193} + m_ParentAnchorRotation: {x: -0.6448133, y: -0.29020026, z: -0.6448133, w: 0.29020026} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: -0.7071068, z: -0, w: 0.7071068} + m_ComputeParentAnchor: 1 + m_ArticulationJointType: 2 + m_LinearX: 1 + m_LinearY: 0 + m_LinearZ: 0 + m_SwingY: 2 + m_SwingZ: 2 + m_Twist: 1 + m_XDrive: + lowerLimit: 0 + upperLimit: 40.107048 + stiffness: 0 + damping: 0 + forceLimit: 1000 + target: 0 + targetVelocity: 0 + m_YDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_ZDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0 + m_JointFriction: 0 + m_Immovable: 0 + m_UseGravity: 1 +--- !u!114 &1794209842 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1794209837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fba5fd74d37a6cf4284698624eb8f6aa, type: 3} + m_Name: + m_EditorClassIdentifier: + IsBaseLink: 0 +--- !u!1 &1802392971 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1802392972} + - component: {fileID: 1802392973} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1802392972 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1802392971} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.000000022351758, y: -0.000000020489082, z: 0.000000029802314} + m_LocalScale: {x: 0.9999999, y: 1.0000002, z: 1} + m_Children: + - {fileID: 1001576834} + m_Father: {fileID: 1751193719} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1802392973 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1802392971} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b2685e7e7719cd43814f41f35664c0b, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!1 &1832673845 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1832673846} + - component: {fileID: 1832673847} + m_Layer: 0 + m_Name: Collisions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1832673846 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1832673845} + m_LocalRotation: {x: 0.000000042146823, y: -1.776356e-15, z: -1.3083295e-14, w: 1} + m_LocalPosition: {x: -0.000000042070006, y: -0.0000000025440383, z: 0.000000014901159} + m_LocalScale: {x: 1, y: 0.9999999, z: 1} + m_Children: + - {fileID: 2063951599} + m_Father: {fileID: 1619744094} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1832673847 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1832673845} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46398bc5d6905ad429a6d2d973afe002, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1835653467 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2095708318} + m_Modifications: + - target: {fileID: 6485605748943850498, guid: e6d0ecc0c23e84650b6546cfa27f2ce2, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6485605748943850498, guid: e6d0ecc0c23e84650b6546cfa27f2ce2, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6485605748943850498, guid: e6d0ecc0c23e84650b6546cfa27f2ce2, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6485605748943850498, guid: e6d0ecc0c23e84650b6546cfa27f2ce2, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6485605748943850498, guid: e6d0ecc0c23e84650b6546cfa27f2ce2, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6485605748943850498, guid: e6d0ecc0c23e84650b6546cfa27f2ce2, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 6485605748943850498, guid: e6d0ecc0c23e84650b6546cfa27f2ce2, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 6485605748943850498, guid: e6d0ecc0c23e84650b6546cfa27f2ce2, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 6485605748943850498, guid: e6d0ecc0c23e84650b6546cfa27f2ce2, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6485605748943850498, guid: e6d0ecc0c23e84650b6546cfa27f2ce2, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6485605748943850498, guid: e6d0ecc0c23e84650b6546cfa27f2ce2, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9165291503513771900, guid: e6d0ecc0c23e84650b6546cfa27f2ce2, type: 3} + propertyPath: m_Name + value: base + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 7516875557038166047, guid: e6d0ecc0c23e84650b6546cfa27f2ce2, type: 3} + - {fileID: 475357186957070514, guid: e6d0ecc0c23e84650b6546cfa27f2ce2, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: e6d0ecc0c23e84650b6546cfa27f2ce2, type: 3} +--- !u!4 &1835653468 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6485605748943850498, guid: e6d0ecc0c23e84650b6546cfa27f2ce2, type: 3} + m_PrefabInstance: {fileID: 1835653467} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1835653469 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 8179897406682175465, guid: e6d0ecc0c23e84650b6546cfa27f2ce2, type: 3} + m_PrefabInstance: {fileID: 1835653467} + m_PrefabAsset: {fileID: 0} +--- !u!64 &1835653470 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1835653469} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 2005865196} +--- !u!64 &1835653471 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1835653469} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 1241379832} +--- !u!64 &1835653472 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1835653469} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 53898141} +--- !u!64 &1835653473 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1835653469} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 511517856} +--- !u!64 &1835653474 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1835653469} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 705056917} +--- !u!64 &1835653475 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1835653469} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 787515908} +--- !u!64 &1835653476 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1835653469} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 1235181549} +--- !u!64 &1835653477 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1835653469} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 1157715599} +--- !u!64 &1835653478 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1835653469} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 240310602} +--- !u!64 &1835653479 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1835653469} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 1947734108} +--- !u!64 &1835653480 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1835653469} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 1566656009} +--- !u!64 &1835653481 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1835653469} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 1189489621} +--- !u!64 &1835653482 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1835653469} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 1580533937} +--- !u!64 &1835653483 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1835653469} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 427510536} +--- !u!1 &1840527073 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1840527074} + - component: {fileID: 1840527075} + m_Layer: 0 + m_Name: Collisions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1840527074 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1840527073} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.000000011153518, y: -0.00000000988148, z: 0.000000014901161} + m_LocalScale: {x: 0.99999976, y: 1.0000002, z: 1} + m_Children: + - {fileID: 493494363} + m_Father: {fileID: 1557562617} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1840527075 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1840527073} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46398bc5d6905ad429a6d2d973afe002, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1845663274 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1704117254} + m_Modifications: + - target: {fileID: -8679921383154817045, guid: c47ec6d89e06141d58469819373ee0fe, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: c47ec6d89e06141d58469819373ee0fe, type: 3} + propertyPath: m_LocalScale.x + value: 1.0000002 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: c47ec6d89e06141d58469819373ee0fe, type: 3} + propertyPath: m_LocalScale.y + value: 1.0000001 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: c47ec6d89e06141d58469819373ee0fe, type: 3} + propertyPath: m_LocalScale.z + value: 1.0000001 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: c47ec6d89e06141d58469819373ee0fe, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: c47ec6d89e06141d58469819373ee0fe, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: c47ec6d89e06141d58469819373ee0fe, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: c47ec6d89e06141d58469819373ee0fe, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: c47ec6d89e06141d58469819373ee0fe, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: c47ec6d89e06141d58469819373ee0fe, type: 3} + propertyPath: m_LocalRotation.y + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: c47ec6d89e06141d58469819373ee0fe, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: c47ec6d89e06141d58469819373ee0fe, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: c47ec6d89e06141d58469819373ee0fe, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: c47ec6d89e06141d58469819373ee0fe, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -7264643304161535556, guid: c47ec6d89e06141d58469819373ee0fe, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: 55291342286754144, guid: c47ec6d89e06141d58469819373ee0fe, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: 919132149155446097, guid: c47ec6d89e06141d58469819373ee0fe, type: 3} + propertyPath: m_Name + value: wrist3 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: c47ec6d89e06141d58469819373ee0fe, type: 3} +--- !u!4 &1845663275 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: c47ec6d89e06141d58469819373ee0fe, type: 3} + m_PrefabInstance: {fileID: 1845663274} + m_PrefabAsset: {fileID: 0} +--- !u!43 &1867708184 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 372 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 64 + localAABB: + m_Center: {x: -0.004251318, y: 0.23385532, z: -0.0013623163} + m_Extent: {x: 0.054425962, y: 0.049945697, z: 0.039958425} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 370022003f00050002000b0005000a0010000e00060010000a000e0010000000090013000e000000130001000600140006000e00140007000c0015000c000f0015000f000d00150012000a0018000a0016001800080002001c000b0002001d00170001001e000c0017001e001a0003001e00020008001f0015000d0021000f00040023000d000f00230004000f0024001800040024001200180024000200050025000500100025000a00120026001200190026000a000500270005000b00270016000a0027000b001d0028000d002300280017000c0029001f0008002a00020011002b001d0002002b00110021002b00040018002c00180016002c0027000b002c00160027002c000e0013002d0013001a002d00110007002e00150021002e00210011002e00060001002f00100006002f0001001f002f00200010002f001f002a002f002a0020002f0001001400300014001a0030001e00010030001a001e0030000700110031001100020031000100170031001f000100310002001f00310029000700310017002900310009000f0032000f001b0032002200090032001b002200320009000000330000000e0033000e000a0033001900090033000a002600330026001900330021000d00340028001d0034000d00280034001d002b0034002b00210034001c000200350002002500350025001000350008001c0036001c00350036003500100036001300090037000900220037000700150038002e000700380015002e0038000f000c00390003001b0039001b000f0039000c001e0039001e0003003900230004003a000b0028003a00280023003a0004002c003a002c000b003a000f0009003b00090019003b00190012003b0024000f003b00120024003b00100020003c002a0008003c0020002a003c00080036003c00360010003c000c0007003d00070029003d0029000c003d0014000e003e001a0014003e000e002d003e002d001a003e0003001a003f001a0013003f001b0003003f0022001b003f00130037003f00 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 64 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 768 + _typelessdata: 5cd1483db2978f3e7471dc3b41e3123c17973f3e8bb6133d5bb4203cce523c3ec0881dbd199141bdd3af823ef4161e3d90bf3ebd7636873e0f1cf8bc1d5e473ddbb3703e494712bd2f7b443d62016e3e37ce103d544ffcbc3c3b3d3e935c8d3c258c063daf093d3ed8d8443cda2d2abd5e4e913e2a258e3bb14e4d3d38ed8b3e682ebdbcb7cef6bc55997c3ef03f29bd8a9a64bdb43d653e12b1063d975770bdb43d653e58e8f4bcee834d3d57f28b3e3779be3c975770bd70fe893e6b0480bc2eaa453db4c8553ef6c56bbccd88fcbceb2e3d3e7e738cbc7cde81bc47608e3e922dc6bc7cde81bc47608e3efc38c73cfc5e473dc2db813e33ce123d975770bd58b6533e77bec23a6bc6453dccd0853ec06006bd56311ebca9b93f3eb948133dfaa4b0bc0d88883e0eda11bdc5c854bc5e4e913e104e51bc3908c8bc479b853ef4161e3d3e6062bdb515863e6a0dbb3c721df83c71e13c3e43538dbc32551ebc68aa3f3efcea12bd58f458bde2e8703ef4161e3da3e58a3c5de93c3e6d6efb3c7f2c413df1ed583e91979e3c8a9a64bd408d593e922dc6bc1b214abd73538b3ec827a33cc22556bd828a803e3d1508bd217a34bd0db08c3e3c25a2bcf8d9423d2d0a663edb8804bdd3bd493d64538e3e185f70bc223f463dffcc813eca7811bddd074abda7b2703ee80512bd85c78fbcf8463d3e1890f93c7677f33c0167403e76e9b63c8d4d90bc1e103d3ecd9bf9bc3908c8bc479b853ec0881dbd1891303d79e2893e1727e33c66c408bd194e3d3e04ae41bc5404433d8c08663e3532053d5731e7bcdd24763ee2e21d3d42a81ebc94ca3c3ea3fb083df23758bda2a88b3ebc59473c2dcb4a3d0ad28f3eef47b83a8a9a64bdcc665f3e58e8f4bce859f43c8040403eae76b6bc0696103d0dff3f3ee1bf41bcd83234bddba68c3ee9eca23c899008bd66623d3e3776433cbec062bd89fd813e3a53e73ceba13ebd01cd813e2e9111bd984437bd516d8e3ea05845bcbf3b103d8419403e3469433c2a75cfbcde9f3d3e61c0cc3c7bd0393ddfb9853e5231063da1f03fbdb8ae883eb701e53c + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: -0.004251318, y: 0.23385532, z: -0.0013623163} + m_Extent: {x: 0.054425962, y: 0.049945697, z: 0.039958425} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &1871186933 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1871186934} + - component: {fileID: 1871186935} + m_Layer: 0 + m_Name: Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1871186934 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1871186933} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1.1862517e-11, y: 0, z: -0.000000014901158} + m_LocalScale: {x: 0.99999946, y: 1.0000006, z: 1} + m_Children: + - {fileID: 1455610889} + m_Father: {fileID: 1794209838} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1871186935 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1871186933} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e9090ae501ff9cd459bec5271d40249c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1899499213 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1899499214} + - component: {fileID: 1899499215} + m_Layer: 0 + m_Name: Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1899499214 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1899499213} + m_LocalRotation: {x: 0.000000042146823, y: -1.776356e-15, z: -1.3083295e-14, w: 1} + m_LocalPosition: {x: -0.000000042070006, y: -0.0000000025440383, z: 0.000000014901159} + m_LocalScale: {x: 1, y: 0.9999999, z: 1} + m_Children: + - {fileID: 819291651} + m_Father: {fileID: 1619744094} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1899499215 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1899499213} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e9090ae501ff9cd459bec5271d40249c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1904475131 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1904475132} + - component: {fileID: 1904475133} + m_Layer: 0 + m_Name: Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1904475132 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1904475131} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 860929727} + m_Father: {fileID: 859020023} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1904475133 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1904475131} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e9090ae501ff9cd459bec5271d40249c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1922870297 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1922870298} + - component: {fileID: 1922870299} + m_Layer: 0 + m_Name: Collisions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1922870298 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1922870297} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2095708318} + m_Father: {fileID: 859020023} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1922870299 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1922870297} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46398bc5d6905ad429a6d2d973afe002, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1934719630 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1934719631} + - component: {fileID: 1934719632} + m_Layer: 0 + m_Name: Collisions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1934719631 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1934719630} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1709504115} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1934719632 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1934719630} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46398bc5d6905ad429a6d2d973afe002, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!43 &1947734108 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 222 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 39 + localAABB: + m_Center: {x: -0.036110185, y: 0.04544718, z: 0.031197954} + m_Extent: {x: 0.02885148, y: 0.024040543, z: 0.032698344} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 120010002600000001000200010000000300020001000300000002000500020004000500020003000700030000000800050004000900040002000b00030008000d00090004000e0008000000100000000a00100010000a00110006001000110006000c0012000800100012000b000700150014000b0015000d00140015000200070016000b000200160007000b00160004000b0017000400170018000e000400190004001800190018000c00190009000e001b00110009001b00060011001b00050009001c00090013001c0013000a001c001a0005001c000c0006001d000e0019001d0019000c001d001b000e001d0006001b001d00070003001e0003000d001e000b0014001f0014000f001f0017000b001f000f0017001f001500070020000d001500200007001e0020001e000d0020000f000800210012000c00210008001200210017000f0021000c00180021001800170021000a00000022001c000a0022001a001c00220011000a0023000900110023001300090023000a00130023000d000800240008000f00240014000d0024000f001400240000000500250005001a0025002200000025001a0022002500100006002600060012002600 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 39 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 468 + _typelessdata: 70daedbbf85caf3c10dc823de09702bc4a39b43c71c335ba70daedbb944f8e3dc0a8c4ba9f0a85bdf85caf3cc0a8c4ba64812bbd944f8e3d071ce03c70daedbb944f8e3da1af463d9ca923bdba2bbf3cc171563dfc094bbd5b5e8a3dc0a8c4bafc4d7abdf85caf3c34a5c03c218db9bc944f8e3d81ed363d960f75bcba2bbf3c10dc823d472c43bd944f8e3de48c633cfc094bbd9df0ce3c16092f3d9f0a85bdba2bbf3c920d053c509ef8bc5b5e8a3dab24273d487072bd9df0ce3c071ce03ccc0fd9bcf85caf3c00f6753d36cbe8bca1abde3c96116e3d9ced52bdf85caf3cab24273d34438abce037753d568d4e3dfc4d7abd6835fe3c488f813cfc094bbd5b5e8a3d920d053ca15a41bd876a8c3d48cd7db9a6483bbd226d863d34a5c03c9ced52bd6835fe3c4269173d9ca923bd5b5e8a3dda92ff3cbc7b16bc15f3453d2a2d663d910a0cbd8570ee3c764f5e3d400a36bc944f8e3da1af463d9ca923bd36f8063da1af463d9f0a85bdba2bbf3cc0a8c4baba866abd9b9a1e3d8813a13c487072bd0d7d263dccf7ca3bba866abd9df0ce3cda92ff3c400a36bc9df0ce3c10dc823de0c5a9bc0d7d263d2a2d663dd81581bdba2bbf3cb24a913c70daedbb15f3453d2a2d663d9ca923bdf85caf3cc171563d + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: -0.036110185, y: 0.04544718, z: 0.031197954} + m_Extent: {x: 0.02885148, y: 0.024040543, z: 0.032698344} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1001 &1994679285 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1060206337461994501, guid: 000ea530b614d4a25b15d64ebe0b6ad2, type: 3} + propertyPath: m_Name + value: Cube + objectReference: {fileID: 0} + - target: {fileID: 1060206337461996541, guid: 000ea530b614d4a25b15d64ebe0b6ad2, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 1060206337461996541, guid: 000ea530b614d4a25b15d64ebe0b6ad2, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1060206337461996541, guid: 000ea530b614d4a25b15d64ebe0b6ad2, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1060206337461996541, guid: 000ea530b614d4a25b15d64ebe0b6ad2, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 000ea530b614d4a25b15d64ebe0b6ad2, type: 3} +--- !u!1 &1994679286 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1060206337461994501, guid: 000ea530b614d4a25b15d64ebe0b6ad2, type: 3} + m_PrefabInstance: {fileID: 1994679285} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1994679287 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1994679286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 417413544452d4d3b9d7955bb12c9077, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1994679288 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1994679286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: daba81ca1c4ca4f98b498d2ac664220e, type: 3} + m_Name: + m_EditorClassIdentifier: + mustBeReachable: 1 +--- !u!114 &1994679289 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1994679286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b33f0bc2b78db642a758f07826d0dd0, type: 3} + m_Name: + m_EditorClassIdentifier: + labels: + - cube_position + useAutoLabeling: 0 + autoLabelingSchemeType: +--- !u!43 &1997017431 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 372 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 64 + localAABB: + m_Center: {x: -0.009673493, y: 0.0102848355, z: 0.00026595406} + m_Extent: {x: 0.04013837, y: 0.04657735, z: 0.03673365} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 3e0000003f001300090016000a0013001600070015001900090013001a0019000b001a001500090021000b001900210019001500210009001a0021001a000b00210013000a0022000c00130022001d00000022000a001d00220019000300230007001900230003001300240013000c00240023000300240012002300240024000c00250016000400260020001100280027000f00280011002700280025000c0029001000250029000a0016002a001d000a002a00160026002a0020000e002b00180020002b00010002002c00070001002c00150007002c000f0017002c00020028002c0028000f002c00050018002d00250010002d00080025002d002b0008002d0018002b002d000d001c002e001c0005002e001f000d002e0005002d002e002d0010002e001b0006002f001c000d002f00060027002f0027001c002f001500040030000900150030001600090030000400160030000800120031001200240031002500080031002400250031000d001d0032001d002a0032002a001b0032001b002f0032002f000d0032000e002000330028000200330020002800330002000100340001000700340007001e00340006001400350017000f0035001400170035002700060035000f00270035001200080036000e001e00360008002b0036002b000e00360000001d0037001d000d0037000d001f00370014000600380006001b0038002600140038001b002a0038002a00260038001e000700390023001200390007002300390012003600390036001e003900040015003a00170014003a00260004003a00140026003a0015002c003a002c0017003a00130003003b00030019003b001a0013003b0019001a003b00180005003c0005001c003c00110020003c00200018003c00270011003c001c0027003c001e000e003d00330002003d000e0033003d00020034003d0034001e003d00220000003e000c0022003e0029000c003e0029003e003f00100029003f002e0010003f001f002e003f00000037003f0037001f003f00 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 64 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 768 + _typelessdata: 2ca7f33c03cb533dbb291e3caba54bbd1d780bbdfbbee6bb903e29bd76a714bdbe7c16bc4a261bbccc245d3dbb60f3bca17a48bde5f14c3c0765053dcf422c3c96731cbc069ab13a3ac0a0bce56464bc966e023dd4694abdea39d1bba9980cbd66780e3c84ed2a3c3e3edcbc8f32e6bc8e55653d9b8b1e3cce2df03b7921683d5270eb3c321344bdf3fcfa3cc8b889bc13b6d63c274d5f3d272d8fbc4be46f3c919a6c3c1a4dc03c623eb2bc47b9c7bc40b3cebc285927bd00b400bd80cba53c2363dd3cda78a83c9ce599bbfb5e5dbcdb6ff5bcee62f33b2b79a2bcb82b9c388a1913bdedf01b3c53e8683d3759e6bc125c27bde3b9cebbe68c173dbf8a49bd8942bc3c1729d93cccf8f1bbc63d673de858ea3ca5f648bda7a2bbbc3b66d83c2b21d03b19ad39bc25bb4cbc1d1749bd70126f3c97e602bd8c10d5bcf21c653d951878bcc9be3cbcdb70133bbc050c3dc5700a3cc621b4bbafa68d3c754e913c2338563d7060d93c5aef27bd12a29bbc1df803bd1dbfdd3c1c82da3c2ede3c3cd9323cbc3351e4bc91982fbc125e44bd7d420e3d34695e3b955fe93c70be683d5bd3fd3b39e425bd84ed2a3cbcd012bdd292183c99445e3d34eef4bc959f9b3c6014ca3ce08dbcbcac2a27bde348cd3b4153173d2e1e7ebc37a5d3bc3bbb9f3c9dd9d6bcef1a12bd915ab73bc7cbf63cddb2193d829013bc5924a93b03b15e3d0e8ffb3c40fe65bb8ab33bbcefcac8bc86074cbd44e40bbd983eff3b4c26863cc651233b1dbb4dbc8bdebb3c84ed2a3c50acb13ba29865bbba5bf5bbbc5fdf3c301091bc4e68643d1f0ac53c7984393bd890983c17bc00bddd9cde3be6bda83c83b2f43c12aae6bc3ce707bd052d79bc85e948bdeec8eebcdf109fbc1f51e5bc6a66a7bcf28ef73c7af7b1bcad1445bc0b8b08bd2bddcf3c5814073dc3bc913cf2f1d5bcc9000b3b66bb163d011528bd52370bbc275f15bdf63549bd73d588bbd7920e3db35a80bc5410653d93afd0bc6d29bcba9917b2bc43105d3b8d1c27bdb792debc91dfd2bc7a91f93c65825f3d37d9e4bb2e16f53c2f3eff3c70c2b53b + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: -0.009673493, y: 0.0102848355, z: 0.00026595406} + m_Extent: {x: 0.04013837, y: 0.04657735, z: 0.03673365} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!43 &2005865196 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 168 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 30 + localAABB: + m_Center: {x: 0.024955288, y: 0.010163829, z: 0.04707381} + m_Extent: {x: 0.033176295, y: 0.011836121, z: 0.01874234} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 14001b001d00040001000500010004000600020001000700010006000b00070001000b0007000b000c00000002000c00020007000c000b0006000c00060004000e0003000c000e000c0006000e00010002000f00050001000f000400050010000a00040010001000090011000d000500130005000d00140010000500140009001000140003000e0015000e000400150012000300150000000c0016000c000300160003001200160012000a0016000200080017000f000200170008000f00170005000f0018000f00080018000800020019000200130019001300050019000500180019001800080019000a0010001a00100011001a0016000a001a00110016001a00020000001b00130002001b000d0013001b0014000d001b0004000a001c000a0012001c00150004001c00120015001c00110009001d00090014001d00000016001d00160011001d001b0000001d00 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 30 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 360 + _typelessdata: 181be03c3958af3caeef753db4b3463dd030dbba20d1ef3c92944b3d3139b43c6617e83c67b106bc6c20b23c01586f3dd02d5fbbd030dbba9eca863d6f75563dd030dbbaac33273dc4848c3bd030dbba79d53e3ddb4c093d3b39b43c3cb3f83c621b6e3d3958af3c549cff3cd887c33c2385d8397c24733d90d4c1ba20949f3c9eca863dc9ac073dd030dbba549cff3c597f513b3d39b43cc8a13e3d3f30273d20949f3cc76f563d70daedbbd030dbba94116e3d621b6e3dd030dbba20d1ef3cc4848c3bd030dbba9eca863d0274913cc4d48f3cb1d9823d70daedbb3958af3cb1d9823dec974e3d3958af3cc6112f3d385d083db1a9e53953b45f3d70daedbbd030dbbab1d9823d91ab813c3958af3cb1d9823d621b6e3d3958af3c20d1ef3c621b6e3dd030dbba549cff3c2a37663d3958af3cde910f3dc4848c3bc4d48f3c9eca863d02910f3d3958af3cba2f663dfc82aebbc4d48f3c9eca863d7cb2c03c20949f3c88d17d3d + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0.024955288, y: 0.010163829, z: 0.04707381} + m_Extent: {x: 0.033176295, y: 0.011836121, z: 0.01874234} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &2013516726 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2013516727} + - component: {fileID: 2013516728} + m_Layer: 0 + m_Name: Collisions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2013516727 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2013516726} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1.1862517e-11, y: 0, z: -0.000000014901158} + m_LocalScale: {x: 0.99999946, y: 1.0000006, z: 1} + m_Children: + - {fileID: 1446706346} + m_Father: {fileID: 1062953765} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2013516728 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2013516726} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46398bc5d6905ad429a6d2d973afe002, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &2023847682 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 589410764} + m_Modifications: + - target: {fileID: 1038137129100238929, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 3b0e2ceb0b7d245f185a3ccd43540485, type: 2} + - target: {fileID: 6266980531744727053, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_Name + value: robotiq_arg2f_140_outer_finger + objectReference: {fileID: 0} + - target: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_LocalScale.x + value: 0.9999999 + objectReference: {fileID: 0} + - target: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_LocalScale.y + value: 1.0000002 + objectReference: {fileID: 0} + - target: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_LocalPosition.x + value: -0.000000011153523 + objectReference: {fileID: 0} + - target: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_LocalPosition.y + value: -0.0000000098814725 + objectReference: {fileID: 0} + - target: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_LocalPosition.z + value: 0.000000014901161 + objectReference: {fileID: 0} + - target: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: b028b05c5eb474e149455232fa3030d0, type: 3} +--- !u!4 &2023847683 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7865403266817997022, guid: b028b05c5eb474e149455232fa3030d0, type: 3} + m_PrefabInstance: {fileID: 2023847682} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &2023967685 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 638849420} + m_Modifications: + - target: {fileID: 276214036372759509, guid: 6ed84fb64e3bd43219ff4ee606cd0e26, type: 3} + propertyPath: m_Name + value: wrist3 + objectReference: {fileID: 0} + - target: {fileID: 7558669246798876713, guid: 6ed84fb64e3bd43219ff4ee606cd0e26, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7558669246798876713, guid: 6ed84fb64e3bd43219ff4ee606cd0e26, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7558669246798876713, guid: 6ed84fb64e3bd43219ff4ee606cd0e26, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7558669246798876713, guid: 6ed84fb64e3bd43219ff4ee606cd0e26, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7558669246798876713, guid: 6ed84fb64e3bd43219ff4ee606cd0e26, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7558669246798876713, guid: 6ed84fb64e3bd43219ff4ee606cd0e26, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7558669246798876713, guid: 6ed84fb64e3bd43219ff4ee606cd0e26, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7558669246798876713, guid: 6ed84fb64e3bd43219ff4ee606cd0e26, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7558669246798876713, guid: 6ed84fb64e3bd43219ff4ee606cd0e26, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7558669246798876713, guid: 6ed84fb64e3bd43219ff4ee606cd0e26, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7558669246798876713, guid: 6ed84fb64e3bd43219ff4ee606cd0e26, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 3202242586390872660, guid: 6ed84fb64e3bd43219ff4ee606cd0e26, type: 3} + - {fileID: 1818841289692997594, guid: 6ed84fb64e3bd43219ff4ee606cd0e26, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: 6ed84fb64e3bd43219ff4ee606cd0e26, type: 3} +--- !u!4 &2023967686 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7558669246798876713, guid: 6ed84fb64e3bd43219ff4ee606cd0e26, type: 3} + m_PrefabInstance: {fileID: 2023967685} + m_PrefabAsset: {fileID: 0} +--- !u!1 &2023967687 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5735535399928676899, guid: 6ed84fb64e3bd43219ff4ee606cd0e26, type: 3} + m_PrefabInstance: {fileID: 2023967685} + m_PrefabAsset: {fileID: 0} +--- !u!64 &2023967688 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2023967687} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 390043028} +--- !u!1 &2025211108 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2025211109} + - component: {fileID: 2025211110} + m_Layer: 0 + m_Name: Collisions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2025211109 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2025211108} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 745613285} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2025211110 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2025211108} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46398bc5d6905ad429a6d2d973afe002, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &2028491881 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 860929727} + m_Modifications: + - target: {fileID: -8679921383154817045, guid: d484aabd292c74bba841583cff19f91e, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: d484aabd292c74bba841583cff19f91e, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: d484aabd292c74bba841583cff19f91e, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: d484aabd292c74bba841583cff19f91e, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: d484aabd292c74bba841583cff19f91e, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: d484aabd292c74bba841583cff19f91e, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: d484aabd292c74bba841583cff19f91e, type: 3} + propertyPath: m_LocalRotation.y + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: d484aabd292c74bba841583cff19f91e, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: d484aabd292c74bba841583cff19f91e, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: d484aabd292c74bba841583cff19f91e, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: d484aabd292c74bba841583cff19f91e, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -2859109400176981367, guid: d484aabd292c74bba841583cff19f91e, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: 919132149155446097, guid: d484aabd292c74bba841583cff19f91e, type: 3} + propertyPath: m_Name + value: base + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d484aabd292c74bba841583cff19f91e, type: 3} +--- !u!4 &2028491882 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: d484aabd292c74bba841583cff19f91e, type: 3} + m_PrefabInstance: {fileID: 2028491881} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &2033197898 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1114402592} + m_Modifications: + - target: {fileID: 500839775044853089, guid: 240499ebf599b4c96b5b8f093a92cc6d, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 3b0e2ceb0b7d245f185a3ccd43540485, type: 2} + - target: {fileID: 2037014143154567433, guid: 240499ebf599b4c96b5b8f093a92cc6d, type: 3} + propertyPath: m_Name + value: robotiq_arg2f_base_link + objectReference: {fileID: 0} + - target: {fileID: 5003594120978592857, guid: 240499ebf599b4c96b5b8f093a92cc6d, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5003594120978592857, guid: 240499ebf599b4c96b5b8f093a92cc6d, type: 3} + propertyPath: m_LocalScale.x + value: 0.99999964 + objectReference: {fileID: 0} + - target: {fileID: 5003594120978592857, guid: 240499ebf599b4c96b5b8f093a92cc6d, type: 3} + propertyPath: m_LocalScale.y + value: 0.99999964 + objectReference: {fileID: 0} + - target: {fileID: 5003594120978592857, guid: 240499ebf599b4c96b5b8f093a92cc6d, type: 3} + propertyPath: m_LocalScale.z + value: 1.0000007 + objectReference: {fileID: 0} + - target: {fileID: 5003594120978592857, guid: 240499ebf599b4c96b5b8f093a92cc6d, type: 3} + propertyPath: m_LocalPosition.x + value: 0.000000014901174 + objectReference: {fileID: 0} + - target: {fileID: 5003594120978592857, guid: 240499ebf599b4c96b5b8f093a92cc6d, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5003594120978592857, guid: 240499ebf599b4c96b5b8f093a92cc6d, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5003594120978592857, guid: 240499ebf599b4c96b5b8f093a92cc6d, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5003594120978592857, guid: 240499ebf599b4c96b5b8f093a92cc6d, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5003594120978592857, guid: 240499ebf599b4c96b5b8f093a92cc6d, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5003594120978592857, guid: 240499ebf599b4c96b5b8f093a92cc6d, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5003594120978592857, guid: 240499ebf599b4c96b5b8f093a92cc6d, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5003594120978592857, guid: 240499ebf599b4c96b5b8f093a92cc6d, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5003594120978592857, guid: 240499ebf599b4c96b5b8f093a92cc6d, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 240499ebf599b4c96b5b8f093a92cc6d, type: 3} +--- !u!4 &2033197899 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5003594120978592857, guid: 240499ebf599b4c96b5b8f093a92cc6d, type: 3} + m_PrefabInstance: {fileID: 2033197898} + m_PrefabAsset: {fileID: 0} +--- !u!1 &2063951598 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2063951599} + - component: {fileID: 2063951600} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2063951599 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2063951598} + m_LocalRotation: {x: -0.000000042146823, y: 1.776356e-15, z: 1.4210848e-14, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.07, y: 0.0075, z: 0.03} + m_Children: + - {fileID: 516410955} + m_Father: {fileID: 1832673846} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2063951600 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2063951598} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1c0c8ba1123c5f949b20e50d5dd6afe4, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 0 +--- !u!1 &2068166490 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2068166491} + - component: {fileID: 2068166492} + m_Layer: 0 + m_Name: Collisions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2068166491 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2068166490} + m_LocalRotation: {x: 0.00000004214682, y: -3.552712e-15, z: -1.3083295e-14, w: 1} + m_LocalPosition: {x: -0.000000053223513, y: 0.0000000073374564, z: -0.000000029802319} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1316688962} + m_Father: {fileID: 1689329240} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2068166492 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2068166490} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46398bc5d6905ad429a6d2d973afe002, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &2078823355 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1297919008} + m_Modifications: + - target: {fileID: 4850610356718183796, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_Name + value: robotiq_arg2f_140_outer_knuckle + objectReference: {fileID: 0} + - target: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_LocalScale.x + value: 0.9999978 + objectReference: {fileID: 0} + - target: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_LocalScale.y + value: 1.0000023 + objectReference: {fileID: 0} + - target: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_LocalPosition.x + value: 1.18634295e-11 + objectReference: {fileID: 0} + - target: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_LocalPosition.y + value: -7.1054134e-15 + objectReference: {fileID: 0} + - target: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_LocalPosition.z + value: -0.000000014901167 + objectReference: {fileID: 0} + - target: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 3936263923955274429, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + - {fileID: 926149587587812734, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} +--- !u!4 &2078823356 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7468468829513844017, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + m_PrefabInstance: {fileID: 2078823355} + m_PrefabAsset: {fileID: 0} +--- !u!1 &2078823357 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 7707470127448741905, guid: db8cf7e47d15e40ddbf86b4e3814ab21, type: 3} + m_PrefabInstance: {fileID: 2078823355} + m_PrefabAsset: {fileID: 0} +--- !u!64 &2078823358 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2078823357} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 1765474288} +--- !u!1 &2079063360 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2079063361} + - component: {fileID: 2079063365} + - component: {fileID: 2079063364} + - component: {fileID: 2079063363} + - component: {fileID: 2079063362} + m_Layer: 0 + m_Name: forearm_link + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2079063361 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2079063360} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.0925, y: 0.24365002, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2116473941} + - {fileID: 224222866} + - {fileID: 958633842} + m_Father: {fileID: 193008323} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2079063362 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2079063360} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 63b6193734b4c8444bcfdf4e9953fe2b, type: 3} + m_Name: + m_EditorClassIdentifier: + xAxis: 0 + jointName: elbow_joint + EffortLimit: 1000 + VelocityLimit: 1000 +--- !u!114 &2079063363 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2079063360} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7631001c063f69d4495bca90731abab2, type: 3} + m_Name: + m_EditorClassIdentifier: + displayInertiaGizmo: 0 + useUrdfData: 1 + centerOfMass: {x: -0, y: 0.106625, z: 0} + inertiaTensor: {x: 0.0065468065, y: 0.00354375, z: 0.0065468065} + inertiaTensorRotation: {x: 0, y: 0, z: 0, w: 1} + inertialAxisRotation: {x: 0, y: 0, z: 0, w: 1} +--- !u!171741748 &2079063364 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2079063360} + m_Enabled: 1 + m_Mass: 1.26 + m_ParentAnchorPosition: {x: 0.0925, y: 0.24365002, z: 0} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_ComputeParentAnchor: 1 + m_ArticulationJointType: 2 + m_LinearX: 1 + m_LinearY: 0 + m_LinearZ: 0 + m_SwingY: 2 + m_SwingZ: 2 + m_Twist: 1 + m_XDrive: + lowerLimit: -180 + upperLimit: 180 + stiffness: 0 + damping: 0 + forceLimit: 150 + target: 0 + targetVelocity: 0 + m_YDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_ZDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0 + m_JointFriction: 0 + m_Immovable: 0 + m_UseGravity: 1 +--- !u!114 &2079063365 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2079063360} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fba5fd74d37a6cf4284698624eb8f6aa, type: 3} + m_Name: + m_EditorClassIdentifier: + IsBaseLink: 0 +--- !u!1 &2095708317 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2095708318} + - component: {fileID: 2095708319} + m_Layer: 0 + m_Name: unnamed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2095708318 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2095708317} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1835653468} + m_Father: {fileID: 1922870298} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2095708319 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2095708317} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1c0c8ba1123c5f949b20e50d5dd6afe4, type: 3} + m_Name: + m_EditorClassIdentifier: + geometryType: 3 +--- !u!1 &2114151217 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2114151218} + - component: {fileID: 2114151219} + m_Layer: 0 + m_Name: Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2114151218 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2114151217} + m_LocalRotation: {x: 0.00000004214682, y: -3.552712e-15, z: -1.3083295e-14, w: 1} + m_LocalPosition: {x: -0.000000053223513, y: 0.0000000073374564, z: -0.000000029802319} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 369889010} + m_Father: {fileID: 1689329240} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2114151219 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2114151217} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e9090ae501ff9cd459bec5271d40249c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &2116473940 +GameObject: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2116473941} + - component: {fileID: 2116473942} + m_Layer: 0 + m_Name: Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2116473941 +Transform: + m_ObjectHideFlags: 8 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2116473940} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 323232828} + m_Father: {fileID: 2079063361} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2116473942 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2116473940} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e9090ae501ff9cd459bec5271d40249c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &2119601898 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1206775186} + m_Modifications: + - target: {fileID: -8679921383154817045, guid: 430c82ece7ad2494883a7b6c240e1f19, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 430c82ece7ad2494883a7b6c240e1f19, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 430c82ece7ad2494883a7b6c240e1f19, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 430c82ece7ad2494883a7b6c240e1f19, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 430c82ece7ad2494883a7b6c240e1f19, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 430c82ece7ad2494883a7b6c240e1f19, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 430c82ece7ad2494883a7b6c240e1f19, type: 3} + propertyPath: m_LocalRotation.y + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 430c82ece7ad2494883a7b6c240e1f19, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 430c82ece7ad2494883a7b6c240e1f19, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 430c82ece7ad2494883a7b6c240e1f19, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 430c82ece7ad2494883a7b6c240e1f19, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -7264643304161535556, guid: 430c82ece7ad2494883a7b6c240e1f19, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: -3241400911300853931, guid: 430c82ece7ad2494883a7b6c240e1f19, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: -1663525628340895374, guid: 430c82ece7ad2494883a7b6c240e1f19, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: 55291342286754144, guid: 430c82ece7ad2494883a7b6c240e1f19, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: 59778664191918849, guid: 430c82ece7ad2494883a7b6c240e1f19, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: 195895361984267992, guid: 430c82ece7ad2494883a7b6c240e1f19, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: 713666196150714412, guid: 430c82ece7ad2494883a7b6c240e1f19, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: 919132149155446097, guid: 430c82ece7ad2494883a7b6c240e1f19, type: 3} + propertyPath: m_Name + value: upperarm + objectReference: {fileID: 0} + - target: {fileID: 5259097174956160687, guid: 430c82ece7ad2494883a7b6c240e1f19, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: 5518263420489308845, guid: 430c82ece7ad2494883a7b6c240e1f19, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: 7374791279145423755, guid: 430c82ece7ad2494883a7b6c240e1f19, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + - target: {fileID: 7850734403127241072, guid: 430c82ece7ad2494883a7b6c240e1f19, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: f012bfca7b50d496aa83f8be63b9ffa1, type: 2} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 430c82ece7ad2494883a7b6c240e1f19, type: 3} +--- !u!4 &2119601899 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: 430c82ece7ad2494883a7b6c240e1f19, type: 3} + m_PrefabInstance: {fileID: 2119601898} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &5666230719848660713 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 8486192990960441477, guid: 91cd5f2dc7b2d4994b76c66c837127eb, type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 8486192990960441477, guid: 91cd5f2dc7b2d4994b76c66c837127eb, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8486192990960441477, guid: 91cd5f2dc7b2d4994b76c66c837127eb, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8486192990960441477, guid: 91cd5f2dc7b2d4994b76c66c837127eb, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9119458553800360511, guid: 91cd5f2dc7b2d4994b76c66c837127eb, type: 3} + propertyPath: m_Name + value: Table + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 91cd5f2dc7b2d4994b76c66c837127eb, type: 3} +--- !u!1 &5666230719848660714 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5666230720265026300, guid: 91cd5f2dc7b2d4994b76c66c837127eb, type: 3} + m_PrefabInstance: {fileID: 5666230719848660713} + m_PrefabAsset: {fileID: 0} diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Scenes/TutorialPoseEstimation.unity.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Scenes/TutorialPoseEstimation.unity.meta new file mode 100644 index 00000000..67c50586 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Scenes/TutorialPoseEstimation.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e3641ce27c8894ef1884fae48a3dc450 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings.meta new file mode 100644 index 00000000..3cb0a8e3 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0735c275001a2c84dafdb30deced5d8d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/ForwardRenderer.asset b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/ForwardRenderer.asset new file mode 100644 index 00000000..7071860e --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/ForwardRenderer.asset @@ -0,0 +1,58 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de640fe3d0db1804a85f9fc8f5cadab6, type: 3} + m_Name: ForwardRenderer + m_EditorClassIdentifier: + m_RendererFeatures: + - {fileID: 3500168158951004291} + m_RendererFeatureMap: 8358685865189330 + postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2} + xrSystemData: {fileID: 11400000, guid: 60e1133243b97e347b653163a8c01b64, type: 2} + shaders: + blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3} + copyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3} + screenSpaceShadowPS: {fileID: 4800000, guid: 0f854b35a0cf61a429bd5dcfea30eddd, type: 3} + samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3} + tileDepthInfoPS: {fileID: 0} + tileDeferredPS: {fileID: 0} + stencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3} + fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3} + materialErrorPS: {fileID: 4800000, guid: 5fd9a8feb75a4b5894c241777f519d4e, type: 3} + m_OpaqueLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_TransparentLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_DefaultStencilState: + overrideStencilState: 0 + stencilReference: 0 + stencilCompareFunction: 8 + passOperation: 0 + failOperation: 0 + zFailOperation: 0 + m_ShadowTransparentReceive: 1 + m_RenderingMode: 0 + m_AccurateGbufferNormals: 0 +--- !u!114 &3500168158951004291 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 780f1bb8e775c4245b86116069a82828, type: 3} + m_Name: NewGroundTruthRendererFeature + m_EditorClassIdentifier: + m_Active: 1 diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/ForwardRenderer.asset.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/ForwardRenderer.asset.meta new file mode 100644 index 00000000..84b996dd --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/ForwardRenderer.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4a8e21d5c33334b11b34a596161b9360 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/SampleSceneProfile.asset b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/SampleSceneProfile.asset new file mode 100644 index 00000000..f30ee1cc --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/SampleSceneProfile.asset @@ -0,0 +1,118 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7893295128165547882 +MonoBehaviour: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0b2db86121404754db890f4c8dfe81b2, type: 3} + m_Name: Bloom + m_EditorClassIdentifier: + active: 1 + m_AdvancedMode: 0 + threshold: + m_OverrideState: 1 + m_Value: 1 + min: 0 + intensity: + m_OverrideState: 1 + m_Value: 1 + min: 0 + scatter: + m_OverrideState: 0 + m_Value: 0.7 + min: 0 + max: 1 + clamp: + m_OverrideState: 0 + m_Value: 65472 + min: 0 + tint: + m_OverrideState: 0 + m_Value: {r: 1, g: 1, b: 1, a: 1} + hdr: 0 + showAlpha: 0 + showEyeDropper: 1 + highQualityFiltering: + m_OverrideState: 0 + m_Value: 0 + dirtTexture: + m_OverrideState: 0 + m_Value: {fileID: 0} + dirtIntensity: + m_OverrideState: 0 + m_Value: 0 + min: 0 +--- !u!114 &-7011558710299706105 +MonoBehaviour: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 899c54efeace73346a0a16faa3afe726, type: 3} + m_Name: Vignette + m_EditorClassIdentifier: + active: 1 + m_AdvancedMode: 0 + color: + m_OverrideState: 0 + m_Value: {r: 0, g: 0, b: 0, a: 1} + hdr: 0 + showAlpha: 0 + showEyeDropper: 1 + center: + m_OverrideState: 0 + m_Value: {x: 0.5, y: 0.5} + intensity: + m_OverrideState: 1 + m_Value: 0.25 + min: 0 + max: 1 + smoothness: + m_OverrideState: 1 + m_Value: 0.4 + min: 0.01 + max: 1 + rounded: + m_OverrideState: 0 + m_Value: 0 +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3} + m_Name: SampleSceneProfile + m_EditorClassIdentifier: + components: + - {fileID: 849379129802519247} + - {fileID: -7893295128165547882} + - {fileID: -7011558710299706105} +--- !u!114 &849379129802519247 +MonoBehaviour: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 97c23e3b12dc18c42a140437e53d3951, type: 3} + m_Name: Tonemapping + m_EditorClassIdentifier: + active: 1 + m_AdvancedMode: 0 + mode: + m_OverrideState: 1 + m_Value: 2 diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/SampleSceneProfile.asset.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/SampleSceneProfile.asset.meta new file mode 100644 index 00000000..4c024c45 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/SampleSceneProfile.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 10fc4df2da32a41aaa32d77bc913491c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/UniversalRP-HighQuality.asset b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/UniversalRP-HighQuality.asset new file mode 100644 index 00000000..ab8107af --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/UniversalRP-HighQuality.asset @@ -0,0 +1,53 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3} + m_Name: UniversalRP-HighQuality + m_EditorClassIdentifier: + k_AssetVersion: 5 + k_AssetPreviousVersion: 5 + m_RendererType: 1 + m_RendererData: {fileID: 0} + m_RendererDataList: + - {fileID: 11400000, guid: 4a8e21d5c33334b11b34a596161b9360, type: 2} + m_DefaultRendererIndex: 0 + m_RequireDepthTexture: 0 + m_RequireOpaqueTexture: 0 + m_OpaqueDownsampling: 1 + m_SupportsHDR: 1 + m_MSAA: 2 + m_RenderScale: 1 + m_MainLightRenderingMode: 1 + m_MainLightShadowsSupported: 1 + m_MainLightShadowmapResolution: 2048 + m_AdditionalLightsRenderingMode: 1 + m_AdditionalLightsPerObjectLimit: 4 + m_AdditionalLightShadowsSupported: 1 + m_AdditionalLightsShadowmapResolution: 512 + m_ShadowDistance: 50 + m_ShadowCascades: 1 + m_Cascade2Split: 0.25 + m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467} + m_ShadowDepthBias: 1 + m_ShadowNormalBias: 1 + m_SoftShadowsSupported: 1 + m_UseSRPBatcher: 1 + m_SupportsDynamicBatching: 0 + m_MixedLightingSupported: 1 + m_DebugLevel: 0 + m_ColorGradingMode: 0 + m_ColorGradingLutSize: 32 + m_ShadowType: 1 + m_LocalShadowsSupported: 0 + m_LocalShadowsAtlasResolution: 256 + m_MaxPixelLights: 0 + m_ShadowAtlasResolution: 256 + m_ShaderVariantLogLevel: 0 diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/UniversalRP-HighQuality.asset.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/UniversalRP-HighQuality.asset.meta new file mode 100644 index 00000000..00e9380b --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/UniversalRP-HighQuality.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 19ba41d7c0026c3459d37c2fe90c55a0 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/UniversalRP-LowQuality.asset b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/UniversalRP-LowQuality.asset new file mode 100644 index 00000000..5548f7e7 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/UniversalRP-LowQuality.asset @@ -0,0 +1,53 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3} + m_Name: UniversalRP-LowQuality + m_EditorClassIdentifier: + k_AssetVersion: 5 + k_AssetPreviousVersion: 5 + m_RendererType: 1 + m_RendererData: {fileID: 0} + m_RendererDataList: + - {fileID: 11400000, guid: 4a8e21d5c33334b11b34a596161b9360, type: 2} + m_DefaultRendererIndex: 0 + m_RequireDepthTexture: 0 + m_RequireOpaqueTexture: 0 + m_OpaqueDownsampling: 1 + m_SupportsHDR: 0 + m_MSAA: 1 + m_RenderScale: 1 + m_MainLightRenderingMode: 1 + m_MainLightShadowsSupported: 0 + m_MainLightShadowmapResolution: 2048 + m_AdditionalLightsRenderingMode: 0 + m_AdditionalLightsPerObjectLimit: 4 + m_AdditionalLightShadowsSupported: 0 + m_AdditionalLightsShadowmapResolution: 512 + m_ShadowDistance: 50 + m_ShadowCascades: 0 + m_Cascade2Split: 0.25 + m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467} + m_ShadowDepthBias: 1 + m_ShadowNormalBias: 1 + m_SoftShadowsSupported: 0 + m_UseSRPBatcher: 1 + m_SupportsDynamicBatching: 0 + m_MixedLightingSupported: 1 + m_DebugLevel: 0 + m_ColorGradingMode: 0 + m_ColorGradingLutSize: 16 + m_ShadowType: 1 + m_LocalShadowsSupported: 0 + m_LocalShadowsAtlasResolution: 256 + m_MaxPixelLights: 0 + m_ShadowAtlasResolution: 256 + m_ShaderVariantLogLevel: 0 diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/UniversalRP-LowQuality.asset.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/UniversalRP-LowQuality.asset.meta new file mode 100644 index 00000000..b5f7a7d9 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/UniversalRP-LowQuality.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a31e9f9f9c9d4b9429ed0d1234e22103 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/UniversalRP-MediumQuality.asset b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/UniversalRP-MediumQuality.asset new file mode 100644 index 00000000..684e17cf --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/UniversalRP-MediumQuality.asset @@ -0,0 +1,53 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3} + m_Name: UniversalRP-MediumQuality + m_EditorClassIdentifier: + k_AssetVersion: 5 + k_AssetPreviousVersion: 5 + m_RendererType: 1 + m_RendererData: {fileID: 0} + m_RendererDataList: + - {fileID: 11400000, guid: 4a8e21d5c33334b11b34a596161b9360, type: 2} + m_DefaultRendererIndex: 0 + m_RequireDepthTexture: 0 + m_RequireOpaqueTexture: 0 + m_OpaqueDownsampling: 1 + m_SupportsHDR: 0 + m_MSAA: 1 + m_RenderScale: 1 + m_MainLightRenderingMode: 1 + m_MainLightShadowsSupported: 1 + m_MainLightShadowmapResolution: 2048 + m_AdditionalLightsRenderingMode: 1 + m_AdditionalLightsPerObjectLimit: 4 + m_AdditionalLightShadowsSupported: 0 + m_AdditionalLightsShadowmapResolution: 512 + m_ShadowDistance: 50 + m_ShadowCascades: 0 + m_Cascade2Split: 0.25 + m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467} + m_ShadowDepthBias: 1 + m_ShadowNormalBias: 1 + m_SoftShadowsSupported: 0 + m_UseSRPBatcher: 1 + m_SupportsDynamicBatching: 0 + m_MixedLightingSupported: 1 + m_DebugLevel: 0 + m_ColorGradingMode: 0 + m_ColorGradingLutSize: 32 + m_ShadowType: 1 + m_LocalShadowsSupported: 0 + m_LocalShadowsAtlasResolution: 256 + m_MaxPixelLights: 0 + m_ShadowAtlasResolution: 256 + m_ShaderVariantLogLevel: 0 diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/UniversalRP-MediumQuality.asset.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/UniversalRP-MediumQuality.asset.meta new file mode 100644 index 00000000..f0bd10ee --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/Settings/UniversalRP-MediumQuality.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d847b876476d3d6468f5dfcd34266f96 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets.meta new file mode 100644 index 00000000..17bc3c4e --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6a5e8234db94d47c398bb150c90442e8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials.meta new file mode 100644 index 00000000..ab4cea2a --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7b0f2d080e36947ce81925fe257578b0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/AlphabetCubeMaterial.mat b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/AlphabetCubeMaterial.mat new file mode 100644 index 00000000..a6089cec --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/AlphabetCubeMaterial.mat @@ -0,0 +1,130 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: AlphabetCubeMaterial + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 3036bc914edc8492da6d96d07103152a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 3036bc914edc8492da6d96d07103152a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Shininess: 0 + - _Smoothness: 0.5 + - _SmoothnessSource: 0 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.5, g: 0.5, b: 0.5, a: 0.5} + m_BuildTextureStacks: [] +--- !u!114 &8654283275976553064 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 4 diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/AlphabetCubeMaterial.mat.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/AlphabetCubeMaterial.mat.meta new file mode 100644 index 00000000..3d50e92c --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/AlphabetCubeMaterial.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7b1ac65e4d6ba4d43a1e55ad33df2275 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/NavyFloor.mat b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/NavyFloor.mat new file mode 100644 index 00000000..def4c6de --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/NavyFloor.mat @@ -0,0 +1,126 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: NavyFloor + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.11 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.11 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.41709685, g: 0.4993905, b: 0.8584906, a: 1} + - _Color: {r: 0.41709685, g: 0.4993905, b: 0.8584906, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &5781502416490015462 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 4 diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/NavyFloor.mat.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/NavyFloor.mat.meta new file mode 100644 index 00000000..902c49d5 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/NavyFloor.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 802f79da2cbfc42b088a04b113dc2cc8 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/NonsymmetricCubeTexture.png b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/NonsymmetricCubeTexture.png new file mode 100644 index 00000000..85e114b4 Binary files /dev/null and b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/NonsymmetricCubeTexture.png differ diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/NonsymmetricCubeTexture.png.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/NonsymmetricCubeTexture.png.meta new file mode 100644 index 00000000..9fcaa337 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/NonsymmetricCubeTexture.png.meta @@ -0,0 +1,94 @@ +fileFormatVersion: 2 +guid: 3036bc914edc8492da6d96d07103152a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/SymmetricCubeTexture.png b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/SymmetricCubeTexture.png new file mode 100755 index 00000000..ff957edb Binary files /dev/null and b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/SymmetricCubeTexture.png differ diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/SymmetricCubeTexture.png.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/SymmetricCubeTexture.png.meta new file mode 100644 index 00000000..d3a97eef --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/SymmetricCubeTexture.png.meta @@ -0,0 +1,94 @@ +fileFormatVersion: 2 +guid: 053a4f9d161a9416a8a3235f66a0550c +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/TableMarkers.mat b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/TableMarkers.mat new file mode 100644 index 00000000..6f789b0a --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/TableMarkers.mat @@ -0,0 +1,87 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: TableMarkers + m_Shader: {fileID: 4800000, guid: 0e9d5a909a1f7e84882a534d0d11e49f, type: 3} + m_ShaderKeywords: _ALPHAPREMULTIPLY_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BumpScale: 1 + - _ClearCoat: 0 + - _ClearCoatMask: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 10 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 3 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Surface: 1 + - _UVSec: 0 + - _UseAoMap: 0 + - _UseColorMap: 1 + - _UseEmissiveMap: 0 + - _UseMetallicMap: 0 + - _UseNormalMap: 0 + - _UseRoughnessMap: 0 + - _WorkflowMode: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _UvOffset: {r: 0, g: 0, b: 0, a: 0} + - _UvTiling: {r: 1, g: 1, b: 0, a: 0} + m_BuildTextureStacks: [] diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/TableMarkers.mat.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/TableMarkers.mat.meta new file mode 100644 index 00000000..d29db25f --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/TableMarkers.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 667a0a7cc851d4ff9a904e746dbb850a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/rep_White_Laminate.mat b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/rep_White_Laminate.mat new file mode 100644 index 00000000..6fba3986 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/rep_White_Laminate.mat @@ -0,0 +1,87 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: rep_White_Laminate + m_Shader: {fileID: 4800000, guid: 0e9d5a909a1f7e84882a534d0d11e49f, type: 3} + m_ShaderKeywords: _ALPHAPREMULTIPLY_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BumpScale: 1 + - _ClearCoat: 0 + - _ClearCoatMask: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 10 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 3 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Surface: 1 + - _UVSec: 0 + - _UseAoMap: 0 + - _UseColorMap: 0 + - _UseEmissiveMap: 0 + - _UseMetallicMap: 0 + - _UseNormalMap: 0 + - _UseRoughnessMap: 0 + - _WorkflowMode: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 0.84951454, g: 0.84951454, b: 0.84951454, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _UvOffset: {r: 0, g: 0, b: 0, a: 0} + - _UvTiling: {r: 1, g: 1, b: 0, a: 0} + m_BuildTextureStacks: [] diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/rep_White_Laminate.mat.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/rep_White_Laminate.mat.meta new file mode 100644 index 00000000..5e623ba6 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/rep_White_Laminate.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 94bcce7a9782047cd8604a33469be546 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/unity-tab-square-white.png b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/unity-tab-square-white.png new file mode 100644 index 00000000..6b538714 Binary files /dev/null and b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/unity-tab-square-white.png differ diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/unity-tab-square-white.png.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/unity-tab-square-white.png.meta new file mode 100644 index 00000000..9c69437c --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Materials/unity-tab-square-white.png.meta @@ -0,0 +1,144 @@ +fileFormatVersion: 2 +guid: 056632003caee49b885d11e1bad807e9 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 2 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Windows Store Apps + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs.meta new file mode 100644 index 00000000..6ee9a0d3 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9005be02e80424fae9f851a04095cbd8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1.meta new file mode 100644 index 00000000..823bff1e --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8f0de65a72a8043d99affeecd88ca70b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Cube.prefab b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Cube.prefab new file mode 100644 index 00000000..ad238fd2 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Cube.prefab @@ -0,0 +1,114 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1060206337461994501 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1060206337461996541} + - component: {fileID: 1060206337461996543} + - component: {fileID: 1060206337461994496} + - component: {fileID: 1060206337461994497} + - component: {fileID: 1060206337461994498} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1060206337461996541 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1060206337461994501} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.4, y: 0.815, z: -0.2} + m_LocalScale: {x: 5, y: 5, z: 5} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1060206337461996543 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1060206337461994501} + m_Mesh: {fileID: -5495902117074765545, guid: 3e59c8daa92034cdc906b0103d57c584, type: 3} +--- !u!23 &1060206337461994496 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1060206337461994501} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 7b1ac65e4d6ba4d43a1e55ad33df2275, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!54 &1060206337461994497 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1060206337461994501} + serializedVersion: 2 + m_Mass: 0.1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!65 &1060206337461994498 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1060206337461994501} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 0.020000001, y: 0.02, z: 0.020000001} + m_Center: {x: 0, y: 0, z: 0} diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Cube.prefab.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Cube.prefab.meta new file mode 100644 index 00000000..af600ed0 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Cube.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 000ea530b614d4a25b15d64ebe0b6ad2 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Floor.prefab b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Floor.prefab new file mode 100644 index 00000000..b77d8b6f --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Floor.prefab @@ -0,0 +1,98 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3075759398607946756 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3075759398607946752} + - component: {fileID: 3075759398607946759} + - component: {fileID: 3075759398607946758} + - component: {fileID: 3075759398607946757} + m_Layer: 0 + m_Name: Floor (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3075759398607946752 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3075759398607946756} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.19999999, y: 0.01, z: 0.2} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &3075759398607946759 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3075759398607946756} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 802f79da2cbfc42b088a04b113dc2cc8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &3075759398607946758 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3075759398607946756} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!64 &3075759398607946757 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3075759398607946756} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Floor.prefab.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Floor.prefab.meta new file mode 100644 index 00000000..d179b7da --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Floor.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ad52ce3c63e5e41e089ede024ab45d65 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Goal.prefab b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Goal.prefab new file mode 100644 index 00000000..01bff59f --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Goal.prefab @@ -0,0 +1,98 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8676940974252440994 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4376607151819607362} + - component: {fileID: 3453184679914181892} + - component: {fileID: 3453184679914181893} + m_Layer: 0 + m_Name: Goal + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4376607151819607362 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8676940974252440994} + m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068} + m_LocalPosition: {x: -0.4, y: 0.77, z: -0.2} + m_LocalScale: {x: 0.02, y: 0.02, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!212 &3453184679914181892 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8676940974252440994} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10306, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: 056632003caee49b885d11e1bad807e9, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 9.01, y: 9.01} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!114 &3453184679914181893 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8676940974252440994} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: daba81ca1c4ca4f98b498d2ac664220e, type: 3} + m_Name: + m_EditorClassIdentifier: + mustBeReachable: 1 diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Goal.prefab.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Goal.prefab.meta new file mode 100644 index 00000000..2ef9aef3 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Goal.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4073954b2af9f475da953eabfe4268cf +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Meshes.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Meshes.meta new file mode 100644 index 00000000..3a73cce8 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Meshes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 055f204b3d66842cca746b0b31029824 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Meshes/SymmetryCube.fbx b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Meshes/SymmetryCube.fbx new file mode 100755 index 00000000..75ce607a Binary files /dev/null and b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Meshes/SymmetryCube.fbx differ diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Meshes/SymmetryCube.fbx.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Meshes/SymmetryCube.fbx.meta new file mode 100644 index 00000000..9739f32b --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Meshes/SymmetryCube.fbx.meta @@ -0,0 +1,101 @@ +fileFormatVersion: 2 +guid: 3e59c8daa92034cdc906b0103d57c584 +ModelImporter: + serializedVersion: 20101 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 1 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Meshes/TableMesh.fbx b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Meshes/TableMesh.fbx new file mode 100755 index 00000000..5b6d0fa0 Binary files /dev/null and b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Meshes/TableMesh.fbx differ diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Meshes/TableMesh.fbx.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Meshes/TableMesh.fbx.meta new file mode 100644 index 00000000..5bb25926 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Meshes/TableMesh.fbx.meta @@ -0,0 +1,101 @@ +fileFormatVersion: 2 +guid: 54891196a59a2438d9ffabde26a1462b +ModelImporter: + serializedVersion: 20101 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 1 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Table.prefab b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Table.prefab new file mode 100644 index 00000000..aef8bd8a --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Table.prefab @@ -0,0 +1,212 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &5666230720265026300 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5666230720265026303} + - component: {fileID: 5666230720265026288} + - component: {fileID: 5666230720265026289} + - component: {fileID: 5666230720265026302} + m_Layer: 0 + m_Name: ObjectPlacementPlane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &5666230720265026303 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5666230720265026300} + m_LocalRotation: {x: -0, y: 0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 76.205, z: 0} + m_LocalScale: {x: 18, y: 0, z: 8.8} + m_Children: [] + m_Father: {fileID: 8486192990960441477} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &5666230720265026288 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5666230720265026300} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &5666230720265026289 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5666230720265026300} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!64 &5666230720265026302 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5666230720265026300} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &9119458553800360511 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8486192990960441477} + - component: {fileID: 4785875070148171552} + - component: {fileID: 7317838451972547562} + - component: {fileID: 8237007771613413234} + - component: {fileID: 8237007771613413235} + m_Layer: 0 + m_Name: Table + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8486192990960441477 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9119458553800360511} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.013} + m_Children: + - {fileID: 5666230720265026303} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4785875070148171552 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9119458553800360511} + m_Mesh: {fileID: -6692290496178104961, guid: 54891196a59a2438d9ffabde26a1462b, type: 3} +--- !u!23 &7317838451972547562 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9119458553800360511} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: -3154233406835817432, guid: 54891196a59a2438d9ffabde26a1462b, type: 3} + - {fileID: 3206304494998862411, guid: 54891196a59a2438d9ffabde26a1462b, type: 3} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!54 &8237007771613413234 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9119458553800360511} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 1 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!65 &8237007771613413235 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9119458553800360511} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 182.88, y: 76.2, z: 91.439995} + m_Center: {x: 0, y: 38.1, z: 0} diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Table.prefab.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Table.prefab.meta new file mode 100644 index 00000000..a2752aeb --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part1/Table.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 91cd5f2dc7b2d4994b76c66c837127eb +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part4.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part4.meta new file mode 100644 index 00000000..0198b9d5 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part4.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 62f5baedd4ad54d3596c4b15486229e9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part4/ROSObjects.prefab b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part4/ROSObjects.prefab new file mode 100644 index 00000000..db3966e4 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part4/ROSObjects.prefab @@ -0,0 +1,1731 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1434237569398990366 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 596915545564621050} + - component: {fileID: 186002465986921032} + - component: {fileID: 2976756204510036743} + m_Layer: 5 + m_Name: EstRot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &596915545564621050 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1434237569398990366} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6065612520723151611} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &186002465986921032 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1434237569398990366} + m_CullTransparentMesh: 1 +--- !u!114 &2976756204510036743 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1434237569398990366} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Predicted Rotation:' +--- !u!1 &3300145754874980272 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3300145754874980274} + - component: {fileID: 3300145754874980273} + m_Layer: 0 + m_Name: Publisher + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3300145754874980274 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3300145754874980272} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.32957774, y: -0.27132595, z: -0.17334747} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4060100200923292977} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &3300145754874980273 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3300145754874980272} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7c5e1d861482e41d7bc3fd8f414e8ddd, type: 3} + m_Name: + m_EditorClassIdentifier: + rosServiceName: ur3_moveit + robot: {fileID: 0} + target: {fileID: 0} + goal: {fileID: 0} + scenario: {fileID: 0} +--- !u!1 &4078379050703132457 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2378463647655926426} + - component: {fileID: 807564774973001121} + - component: {fileID: 7834207908923910145} + m_Layer: 5 + m_Name: EstRotField + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2378463647655926426 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4078379050703132457} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6065612520723151611} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &807564774973001121 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4078379050703132457} + m_CullTransparentMesh: 1 +--- !u!114 &7834207908923910145 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4078379050703132457} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 2 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: (0.0, 0.0, 0.0) +--- !u!1 &4605448895952935025 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8054881476936666769} + - component: {fileID: 2669896244316015229} + - component: {fileID: 2844519353851742896} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8054881476936666769 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4605448895952935025} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.32235846, y: -1.011763, z: -0.6939897} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4060100200923292977} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2669896244316015229 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4605448895952935025} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!114 &2844519353851742896 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4605448895952935025} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!1 &4674123234745922259 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9089450507077783744} + - component: {fileID: 3410874004167176981} + - component: {fileID: 1501387305372817749} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9089450507077783744 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4674123234745922259} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6403084249825688909} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3410874004167176981 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4674123234745922259} + m_CullTransparentMesh: 1 +--- !u!114 &1501387305372817749 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4674123234745922259} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Randomize Cube +--- !u!1 &5121005679875010944 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6222212641188072032} + - component: {fileID: 8826219795831857289} + - component: {fileID: 528049862148510110} + m_Layer: 5 + m_Name: ActualRot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6222212641188072032 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5121005679875010944} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6065612520723151611} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8826219795831857289 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5121005679875010944} + m_CullTransparentMesh: 1 +--- !u!114 &528049862148510110 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5121005679875010944} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Actual Rotation:' +--- !u!1 &6065612519385135535 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6065612519385135528} + - component: {fileID: 6065612519385135530} + - component: {fileID: 6065612519385135529} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6065612519385135528 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612519385135535} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6065612520526500489} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6065612519385135530 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612519385135535} + m_CullTransparentMesh: 1 +--- !u!114 &6065612519385135529 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612519385135535} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Pose Estimation +--- !u!1 &6065612519497859654 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6065612519497859650} + - component: {fileID: 6065612519497859649} + - component: {fileID: 6065612519497859648} + - component: {fileID: 6065612519497859655} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6065612519497859650 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612519497859654} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 6065612519990385173} + - {fileID: 6065612520723151611} + m_Father: {fileID: 4060100200923292977} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!223 &6065612519497859649 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612519497859654} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &6065612519497859648 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612519497859654} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!114 &6065612519497859655 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612519497859654} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!1 &6065612519766423758 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6065612519766423759} + - component: {fileID: 6065612519766423754} + - component: {fileID: 6065612519766423753} + - component: {fileID: 6065612519766423752} + m_Layer: 5 + m_Name: DefaultButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6065612519766423759 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612519766423758} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 6065612519938515979} + m_Father: {fileID: 6065612519990385173} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6065612519766423754 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612519766423758} + m_CullTransparentMesh: 1 +--- !u!114 &6065612519766423753 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612519766423758} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &6065612519766423752 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612519766423758} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 6065612519766423753} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 3300145754874980273} + m_TargetAssemblyTypeName: TrajectoryPlanner, Assembly-CSharp + m_MethodName: Initialize + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &6065612519921590486 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6065612519921590487} + - component: {fileID: 6065612519921590481} + - component: {fileID: 6065612519921590480} + m_Layer: 5 + m_Name: ActualPosField + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6065612519921590487 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612519921590486} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6065612520723151611} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6065612519921590481 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612519921590486} + m_CullTransparentMesh: 1 +--- !u!114 &6065612519921590480 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612519921590486} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 2 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: (0.0, 0.0, 0.0) +--- !u!1 &6065612519938515978 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6065612519938515979} + - component: {fileID: 6065612519938515989} + - component: {fileID: 6065612519938515988} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6065612519938515979 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612519938515978} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6065612519766423759} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6065612519938515989 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612519938515978} + m_CullTransparentMesh: 1 +--- !u!114 &6065612519938515988 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612519938515978} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Reset Robot Position +--- !u!1 &6065612519990385172 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6065612519990385173} + - component: {fileID: 6065612519990385175} + - component: {fileID: 6065612519990385174} + - component: {fileID: 6065612519990385168} + m_Layer: 5 + m_Name: ButtonPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6065612519990385173 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612519990385172} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 6065612519766423759} + - {fileID: 6403084249825688909} + - {fileID: 6065612520526500489} + m_Father: {fileID: 6065612519497859650} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.7, y: 0} + m_AnchorMax: {x: 1, y: 0.3} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6065612519990385175 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612519990385172} + m_CullTransparentMesh: 1 +--- !u!114 &6065612519990385174 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612519990385172} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.392} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &6065612519990385168 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612519990385172} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &6065612520428586361 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6065612520428586362} + - component: {fileID: 6065612520428586308} + - component: {fileID: 6065612520428586363} + m_Layer: 5 + m_Name: ActualPos + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6065612520428586362 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612520428586361} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6065612520723151611} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6065612520428586308 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612520428586361} + m_CullTransparentMesh: 1 +--- !u!114 &6065612520428586363 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612520428586361} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Actual Position:' +--- !u!1 &6065612520526500488 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6065612520526500489} + - component: {fileID: 6065612520526500500} + - component: {fileID: 6065612520526500491} + - component: {fileID: 6065612520526500490} + m_Layer: 5 + m_Name: ServiceButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6065612520526500489 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612520526500488} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 6065612519385135528} + m_Father: {fileID: 6065612519990385173} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6065612520526500500 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612520526500488} + m_CullTransparentMesh: 1 +--- !u!114 &6065612520526500491 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612520526500488} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &6065612520526500490 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612520526500488} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 6065612520526500491} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 3300145754874980273} + m_TargetAssemblyTypeName: TrajectoryPlanner, Assembly-CSharp + m_MethodName: PoseEstimation + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &6065612520723151610 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6065612520723151611} + - component: {fileID: 6065612520723151558} + - component: {fileID: 6065612520723151557} + - component: {fileID: 6065612520723151556} + m_Layer: 5 + m_Name: PositionPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6065612520723151611 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612520723151610} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 6065612520428586362} + - {fileID: 6065612519921590487} + - {fileID: 6222212641188072032} + - {fileID: 1661314376085742098} + - {fileID: 6065612521252200232} + - {fileID: 6065612521249688876} + - {fileID: 596915545564621050} + - {fileID: 2378463647655926426} + m_Father: {fileID: 6065612519497859650} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.4, y: 0.3} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6065612520723151558 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612520723151610} + m_CullTransparentMesh: 1 +--- !u!114 &6065612520723151557 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612520723151610} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.39215687} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &6065612520723151556 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612520723151610} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8a8695521f0d02e499659fee002a26c2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 20 + m_Bottom: 10 + m_ChildAlignment: 4 + m_StartCorner: 0 + m_StartAxis: 0 + m_CellSize: {x: 150, y: 30} + m_Spacing: {x: 0, y: 5} + m_Constraint: 1 + m_ConstraintCount: 2 +--- !u!1 &6065612521249688867 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6065612521249688876} + - component: {fileID: 6065612521249688878} + - component: {fileID: 6065612521249688877} + m_Layer: 5 + m_Name: EstPosField + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6065612521249688876 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612521249688867} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6065612520723151611} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6065612521249688878 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612521249688867} + m_CullTransparentMesh: 1 +--- !u!114 &6065612521249688877 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612521249688867} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 2 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: (0.0, 0.0, 0.0) +--- !u!1 &6065612521252200239 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6065612521252200232} + - component: {fileID: 6065612521252200234} + - component: {fileID: 6065612521252200233} + m_Layer: 5 + m_Name: EstPos + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6065612521252200232 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612521252200239} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6065612520723151611} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6065612521252200234 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612521252200239} + m_CullTransparentMesh: 1 +--- !u!114 &6065612521252200233 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6065612521252200239} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Predicted Position:' +--- !u!1 &6902067790493015645 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1661314376085742098} + - component: {fileID: 7885953415427456719} + - component: {fileID: 7760000243702253726} + m_Layer: 5 + m_Name: ActualRotField + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1661314376085742098 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6902067790493015645} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6065612520723151611} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7885953415427456719 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6902067790493015645} + m_CullTransparentMesh: 1 +--- !u!114 &7760000243702253726 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6902067790493015645} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 2 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: (0.0, 0.0, 0.0) +--- !u!1 &8453269580262183293 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6403084249825688909} + - component: {fileID: 3481642149380925515} + - component: {fileID: 2483290485535161743} + - component: {fileID: 2185646351554938852} + m_Layer: 5 + m_Name: RandomButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6403084249825688909 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8453269580262183293} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 9089450507077783744} + m_Father: {fileID: 6065612519990385173} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3481642149380925515 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8453269580262183293} + m_CullTransparentMesh: 1 +--- !u!114 &2483290485535161743 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8453269580262183293} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &2185646351554938852 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8453269580262183293} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 2483290485535161743} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 3300145754874980273} + m_TargetAssemblyTypeName: TrajectoryPlanner, Assembly-CSharp + m_MethodName: RandomizeCube + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &9002731091214138362 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4060100200923292977} + m_Layer: 0 + m_Name: ROSObjects + m_TagString: TrajectoryPlanners + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4060100200923292977 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9002731091214138362} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 6065612519497859650} + - {fileID: 3300145754874980274} + - {fileID: 8054881476936666769} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part4/ROSObjects.prefab.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part4/ROSObjects.prefab.meta new file mode 100644 index 00000000..0f41000b --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Prefabs/Part4/ROSObjects.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 62e36fbf0e85040b2985c08ad46657f9 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages.meta new file mode 100644 index 00000000..df3901e6 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7ca5bca3c00e14e6182d251c33ab6006 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Moveit.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Moveit.meta new file mode 100644 index 00000000..565c6b92 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Moveit.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 271fcbde1d1d944e497b4c6e255155ad +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Moveit/msg.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Moveit/msg.meta new file mode 100644 index 00000000..7bc1db50 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Moveit/msg.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 012611f98dca34bafbbf6919b3cfffbb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Moveit/msg/RobotTrajectory.cs b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Moveit/msg/RobotTrajectory.cs new file mode 100644 index 00000000..4161f9a2 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Moveit/msg/RobotTrajectory.cs @@ -0,0 +1,52 @@ +//Do not edit! This file was generated by Unity-ROS MessageGeneration. +using System; +using System.Linq; +using System.Collections.Generic; +using System.Text; +using RosMessageGeneration; + +namespace RosMessageTypes.Moveit +{ + public class RobotTrajectory : Message + { + public const string RosMessageName = "moveit_msgs/RobotTrajectory"; + + public Trajectory.JointTrajectory joint_trajectory; + public Trajectory.MultiDOFJointTrajectory multi_dof_joint_trajectory; + + public RobotTrajectory() + { + this.joint_trajectory = new Trajectory.JointTrajectory(); + this.multi_dof_joint_trajectory = new Trajectory.MultiDOFJointTrajectory(); + } + + public RobotTrajectory(Trajectory.JointTrajectory joint_trajectory, Trajectory.MultiDOFJointTrajectory multi_dof_joint_trajectory) + { + this.joint_trajectory = joint_trajectory; + this.multi_dof_joint_trajectory = multi_dof_joint_trajectory; + } + public override List SerializationStatements() + { + var listOfSerializations = new List(); + listOfSerializations.AddRange(joint_trajectory.SerializationStatements()); + listOfSerializations.AddRange(multi_dof_joint_trajectory.SerializationStatements()); + + return listOfSerializations; + } + + public override int Deserialize(byte[] data, int offset) + { + offset = this.joint_trajectory.Deserialize(data, offset); + offset = this.multi_dof_joint_trajectory.Deserialize(data, offset); + + return offset; + } + + public override string ToString() + { + return "RobotTrajectory: " + + "\njoint_trajectory: " + joint_trajectory.ToString() + + "\nmulti_dof_joint_trajectory: " + multi_dof_joint_trajectory.ToString(); + } + } +} diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Moveit/msg/RobotTrajectory.cs.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Moveit/msg/RobotTrajectory.cs.meta new file mode 100644 index 00000000..620c7191 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Moveit/msg/RobotTrajectory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 670239d53265f4c57a5859d6e7e2ac0a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit.meta new file mode 100644 index 00000000..5d1cbfb9 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8063594d1f84a4ea4a0baac033fc9635 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/msg.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/msg.meta new file mode 100644 index 00000000..87768918 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/msg.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9c0659849a1404a59a2d8453df3d850d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/msg/UR3MoveitJoints.cs b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/msg/UR3MoveitJoints.cs new file mode 100644 index 00000000..8a23e30a --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/msg/UR3MoveitJoints.cs @@ -0,0 +1,94 @@ +//Do not edit! This file was generated by Unity-ROS MessageGeneration. +using System; +using System.Linq; +using System.Collections.Generic; +using System.Text; +using RosMessageGeneration; + +namespace RosMessageTypes.Ur3Moveit +{ + public class UR3MoveitJoints : Message + { + public const string RosMessageName = "ur3_moveit/UR3MoveitJoints"; + + public double joint_00; + public double joint_01; + public double joint_02; + public double joint_03; + public double joint_04; + public double joint_05; + public Geometry.Pose pick_pose; + public Geometry.Pose place_pose; + + public UR3MoveitJoints() + { + this.joint_00 = 0.0; + this.joint_01 = 0.0; + this.joint_02 = 0.0; + this.joint_03 = 0.0; + this.joint_04 = 0.0; + this.joint_05 = 0.0; + this.pick_pose = new Geometry.Pose(); + this.place_pose = new Geometry.Pose(); + } + + public UR3MoveitJoints(double joint_00, double joint_01, double joint_02, double joint_03, double joint_04, double joint_05, Geometry.Pose pick_pose, Geometry.Pose place_pose) + { + this.joint_00 = joint_00; + this.joint_01 = joint_01; + this.joint_02 = joint_02; + this.joint_03 = joint_03; + this.joint_04 = joint_04; + this.joint_05 = joint_05; + this.pick_pose = pick_pose; + this.place_pose = place_pose; + } + public override List SerializationStatements() + { + var listOfSerializations = new List(); + listOfSerializations.Add(BitConverter.GetBytes(this.joint_00)); + listOfSerializations.Add(BitConverter.GetBytes(this.joint_01)); + listOfSerializations.Add(BitConverter.GetBytes(this.joint_02)); + listOfSerializations.Add(BitConverter.GetBytes(this.joint_03)); + listOfSerializations.Add(BitConverter.GetBytes(this.joint_04)); + listOfSerializations.Add(BitConverter.GetBytes(this.joint_05)); + listOfSerializations.AddRange(pick_pose.SerializationStatements()); + listOfSerializations.AddRange(place_pose.SerializationStatements()); + + return listOfSerializations; + } + + public override int Deserialize(byte[] data, int offset) + { + this.joint_00 = BitConverter.ToDouble(data, offset); + offset += 8; + this.joint_01 = BitConverter.ToDouble(data, offset); + offset += 8; + this.joint_02 = BitConverter.ToDouble(data, offset); + offset += 8; + this.joint_03 = BitConverter.ToDouble(data, offset); + offset += 8; + this.joint_04 = BitConverter.ToDouble(data, offset); + offset += 8; + this.joint_05 = BitConverter.ToDouble(data, offset); + offset += 8; + offset = this.pick_pose.Deserialize(data, offset); + offset = this.place_pose.Deserialize(data, offset); + + return offset; + } + + public override string ToString() + { + return "UR3MoveitJoints: " + + "\njoint_00: " + joint_00.ToString() + + "\njoint_01: " + joint_01.ToString() + + "\njoint_02: " + joint_02.ToString() + + "\njoint_03: " + joint_03.ToString() + + "\njoint_04: " + joint_04.ToString() + + "\njoint_05: " + joint_05.ToString() + + "\npick_pose: " + pick_pose.ToString() + + "\nplace_pose: " + place_pose.ToString(); + } + } +} diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/msg/UR3MoveitJoints.cs.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/msg/UR3MoveitJoints.cs.meta new file mode 100644 index 00000000..dae42136 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/msg/UR3MoveitJoints.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 25c87d03fcc8749a3a5d97dadfccba03 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/msg/UR3Trajectory.cs b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/msg/UR3Trajectory.cs new file mode 100644 index 00000000..7c2bd111 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/msg/UR3Trajectory.cs @@ -0,0 +1,57 @@ +//Do not edit! This file was generated by Unity-ROS MessageGeneration. +using System; +using System.Linq; +using System.Collections.Generic; +using System.Text; +using RosMessageGeneration; + +namespace RosMessageTypes.Ur3Moveit +{ + public class UR3Trajectory : Message + { + public const string RosMessageName = "ur3_moveit/UR3Trajectory"; + + public Moveit.RobotTrajectory[] trajectory; + + public UR3Trajectory() + { + this.trajectory = new Moveit.RobotTrajectory[0]; + } + + public UR3Trajectory(Moveit.RobotTrajectory[] trajectory) + { + this.trajectory = trajectory; + } + public override List SerializationStatements() + { + var listOfSerializations = new List(); + + listOfSerializations.Add(BitConverter.GetBytes(trajectory.Length)); + foreach(var entry in trajectory) + listOfSerializations.Add(entry.Serialize()); + + return listOfSerializations; + } + + public override int Deserialize(byte[] data, int offset) + { + + var trajectoryArrayLength = DeserializeLength(data, offset); + offset += 4; + this.trajectory= new Moveit.RobotTrajectory[trajectoryArrayLength]; + for(var i = 0; i < trajectoryArrayLength; i++) + { + this.trajectory[i] = new Moveit.RobotTrajectory(); + offset = this.trajectory[i].Deserialize(data, offset); + } + + return offset; + } + + public override string ToString() + { + return "UR3Trajectory: " + + "\ntrajectory: " + System.String.Join(", ", trajectory.ToList()); + } + } +} diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/msg/UR3Trajectory.cs.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/msg/UR3Trajectory.cs.meta new file mode 100644 index 00000000..4ddc9325 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/msg/UR3Trajectory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3d7235034c05c45118815147a5174d1b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv.meta new file mode 100644 index 00000000..77811efe --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: eb91916abcdc148049d2f69e23bcbf73 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv/MoverServiceRequest.cs b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv/MoverServiceRequest.cs new file mode 100644 index 00000000..fdf0878d --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv/MoverServiceRequest.cs @@ -0,0 +1,58 @@ +//Do not edit! This file was generated by Unity-ROS MessageGeneration. +using System; +using System.Linq; +using System.Collections.Generic; +using System.Text; +using RosMessageGeneration; + +namespace RosMessageTypes.Ur3Moveit +{ + public class MoverServiceRequest : Message + { + public const string RosMessageName = "ur3_moveit/MoverService"; + + public UR3MoveitJoints joints_input; + public Geometry.Pose pick_pose; + public Geometry.Pose place_pose; + + public MoverServiceRequest() + { + this.joints_input = new UR3MoveitJoints(); + this.pick_pose = new Geometry.Pose(); + this.place_pose = new Geometry.Pose(); + } + + public MoverServiceRequest(UR3MoveitJoints joints_input, Geometry.Pose pick_pose, Geometry.Pose place_pose) + { + this.joints_input = joints_input; + this.pick_pose = pick_pose; + this.place_pose = place_pose; + } + public override List SerializationStatements() + { + var listOfSerializations = new List(); + listOfSerializations.AddRange(joints_input.SerializationStatements()); + listOfSerializations.AddRange(pick_pose.SerializationStatements()); + listOfSerializations.AddRange(place_pose.SerializationStatements()); + + return listOfSerializations; + } + + public override int Deserialize(byte[] data, int offset) + { + offset = this.joints_input.Deserialize(data, offset); + offset = this.pick_pose.Deserialize(data, offset); + offset = this.place_pose.Deserialize(data, offset); + + return offset; + } + + public override string ToString() + { + return "MoverServiceRequest: " + + "\njoints_input: " + joints_input.ToString() + + "\npick_pose: " + pick_pose.ToString() + + "\nplace_pose: " + place_pose.ToString(); + } + } +} diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv/MoverServiceRequest.cs.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv/MoverServiceRequest.cs.meta new file mode 100644 index 00000000..d1448b9a --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv/MoverServiceRequest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5e23c31d1d96746c7a0acadf55cc6e56 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv/MoverServiceResponse.cs b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv/MoverServiceResponse.cs new file mode 100644 index 00000000..c78637fd --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv/MoverServiceResponse.cs @@ -0,0 +1,57 @@ +//Do not edit! This file was generated by Unity-ROS MessageGeneration. +using System; +using System.Linq; +using System.Collections.Generic; +using System.Text; +using RosMessageGeneration; + +namespace RosMessageTypes.Ur3Moveit +{ + public class MoverServiceResponse : Message + { + public const string RosMessageName = "ur3_moveit/MoverService"; + + public Moveit.RobotTrajectory[] trajectories; + + public MoverServiceResponse() + { + this.trajectories = new Moveit.RobotTrajectory[0]; + } + + public MoverServiceResponse(Moveit.RobotTrajectory[] trajectories) + { + this.trajectories = trajectories; + } + public override List SerializationStatements() + { + var listOfSerializations = new List(); + + listOfSerializations.Add(BitConverter.GetBytes(trajectories.Length)); + foreach(var entry in trajectories) + listOfSerializations.Add(entry.Serialize()); + + return listOfSerializations; + } + + public override int Deserialize(byte[] data, int offset) + { + + var trajectoriesArrayLength = DeserializeLength(data, offset); + offset += 4; + this.trajectories= new Moveit.RobotTrajectory[trajectoriesArrayLength]; + for(var i = 0; i < trajectoriesArrayLength; i++) + { + this.trajectories[i] = new Moveit.RobotTrajectory(); + offset = this.trajectories[i].Deserialize(data, offset); + } + + return offset; + } + + public override string ToString() + { + return "MoverServiceResponse: " + + "\ntrajectories: " + System.String.Join(", ", trajectories.ToList()); + } + } +} diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv/MoverServiceResponse.cs.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv/MoverServiceResponse.cs.meta new file mode 100644 index 00000000..1e5f86fb --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv/MoverServiceResponse.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 65698673876eb433dab16f1c0905e57a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv/PoseEstimationServiceRequest.cs b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv/PoseEstimationServiceRequest.cs new file mode 100644 index 00000000..619b8a22 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv/PoseEstimationServiceRequest.cs @@ -0,0 +1,46 @@ +//Do not edit! This file was generated by Unity-ROS MessageGeneration. +using System; +using System.Linq; +using System.Collections.Generic; +using System.Text; +using RosMessageGeneration; + +namespace RosMessageTypes.Ur3Moveit +{ + public class PoseEstimationServiceRequest : Message + { + public const string RosMessageName = "ur3_moveit/PoseEstimationService"; + + public Sensor.Image image; + + public PoseEstimationServiceRequest() + { + this.image = new Sensor.Image(); + } + + public PoseEstimationServiceRequest(Sensor.Image image) + { + this.image = image; + } + public override List SerializationStatements() + { + var listOfSerializations = new List(); + listOfSerializations.AddRange(image.SerializationStatements()); + + return listOfSerializations; + } + + public override int Deserialize(byte[] data, int offset) + { + offset = this.image.Deserialize(data, offset); + + return offset; + } + + public override string ToString() + { + return "PoseEstimationServiceRequest: " + + "\nimage: " + image.ToString(); + } + } +} diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv/PoseEstimationServiceRequest.cs.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv/PoseEstimationServiceRequest.cs.meta new file mode 100644 index 00000000..975e02af --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv/PoseEstimationServiceRequest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 674a32fe466494d7790f49f4f62697d3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv/PoseEstimationServiceResponse.cs b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv/PoseEstimationServiceResponse.cs new file mode 100644 index 00000000..a10c8249 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv/PoseEstimationServiceResponse.cs @@ -0,0 +1,46 @@ +//Do not edit! This file was generated by Unity-ROS MessageGeneration. +using System; +using System.Linq; +using System.Collections.Generic; +using System.Text; +using RosMessageGeneration; + +namespace RosMessageTypes.Ur3Moveit +{ + public class PoseEstimationServiceResponse : Message + { + public const string RosMessageName = "ur3_moveit/PoseEstimationService"; + + public Geometry.Pose estimated_pose; + + public PoseEstimationServiceResponse() + { + this.estimated_pose = new Geometry.Pose(); + } + + public PoseEstimationServiceResponse(Geometry.Pose estimated_pose) + { + this.estimated_pose = estimated_pose; + } + public override List SerializationStatements() + { + var listOfSerializations = new List(); + listOfSerializations.AddRange(estimated_pose.SerializationStatements()); + + return listOfSerializations; + } + + public override int Deserialize(byte[] data, int offset) + { + offset = this.estimated_pose.Deserialize(data, offset); + + return offset; + } + + public override string ToString() + { + return "PoseEstimationServiceResponse: " + + "\nestimated_pose: " + estimated_pose.ToString(); + } + } +} diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv/PoseEstimationServiceResponse.cs.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv/PoseEstimationServiceResponse.cs.meta new file mode 100644 index 00000000..84fb3f21 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/RosMessages/Ur3Moveit/srv/PoseEstimationServiceResponse.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5778575cb4d4e4afbb15ce3fd9f1257b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts.meta new file mode 100644 index 00000000..fe00ea5d --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 68e4e2251b3c24bf2935bbccc3aa4673 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/InferenceRandomizer.cs b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/InferenceRandomizer.cs new file mode 100644 index 00000000..89e85ba6 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/InferenceRandomizer.cs @@ -0,0 +1,32 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Perception.Randomization.Randomizers; +using UnityEngine.Perception.Randomization.Scenarios; + +namespace UnityEngine.Perception.Randomization.Randomizers +{ + public abstract class InferenceRandomizer : Randomizer + { + public abstract void OnCustomIteration(); + } +} + +public class InferenceRandomization : MonoBehaviour +{ + public static void Move(GameObject scenario) + { + FixedLengthScenario fixedLenScenario = scenario.GetComponent(); + var randomizers = fixedLenScenario.randomizers; + foreach (InferenceRandomizer rand in randomizers) + { + if (rand.enabled == true) + { + rand.OnCustomIteration(); + } + } + } + +} + + diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/InferenceRandomizer.cs.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/InferenceRandomizer.cs.meta new file mode 100644 index 00000000..1dd40e36 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/InferenceRandomizer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1ca48fbd4a5f54b289d6d75c8977f713 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers.meta new file mode 100644 index 00000000..1eac040d --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a7dedcf86f94c4ef0b7354078c0eb1e8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/LightRandomizer.cs b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/LightRandomizer.cs new file mode 100644 index 00000000..c3454e1f --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/LightRandomizer.cs @@ -0,0 +1,41 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using UnityEngine.Perception.Randomization.Parameters; +using UnityEngine.Perception.Randomization.Randomizers; + +[Serializable] +[AddRandomizerMenu("Perception/Light Randomizer")] +public class LightRandomizer : InferenceRandomizer +{ + public FloatParameter lightIntensityParameter; // in range (0.8, 1.2) + + public FloatParameter rotationX; // in range (40, 80) + + public FloatParameter rotationY; // in range (-180, 180) + + public ColorRgbParameter lightColorParameter; //(0.4, 1) + + protected override void OnIterationStart() + { + OnCustomIteration(); + } + + public override void OnCustomIteration() + { + /*Runs at the start of every iteration*/ + IEnumerable tags = tagManager.Query(); + + foreach (LightRandomizerTag tag in tags) + { + var light = tag.gameObject.GetComponent(); + light.intensity = lightIntensityParameter.Sample(); + light.color = lightColorParameter.Sample(); + + Vector3 rotation = new Vector3(rotationX.Sample(), rotationY.Sample(), tag.gameObject.transform.eulerAngles.z); + tag.gameObject.transform.rotation = Quaternion.Euler(rotation); + } + + } +} diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/LightRandomizer.cs.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/LightRandomizer.cs.meta new file mode 100644 index 00000000..d2235b5f --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/LightRandomizer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8c55b7def0daa4aa4ba4305cce0f9bcc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/LightRandomizerTag.cs b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/LightRandomizerTag.cs new file mode 100644 index 00000000..04633d99 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/LightRandomizerTag.cs @@ -0,0 +1,11 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Perception.Randomization.Randomizers; + +[AddComponentMenu("Perception/RandomizerTags/LightRandomizerTag")] +[RequireComponent(typeof(Light))] +public class LightRandomizerTag : RandomizerTag +{ + +} diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/LightRandomizerTag.cs.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/LightRandomizerTag.cs.meta new file mode 100644 index 00000000..7e94f5b2 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/LightRandomizerTag.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 64af179f0e512471fbf1410d6a6fb13e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/RobotArmObjectPositionRandomizer.cs b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/RobotArmObjectPositionRandomizer.cs new file mode 100644 index 00000000..979cb801 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/RobotArmObjectPositionRandomizer.cs @@ -0,0 +1,115 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using UnityEngine.Perception.Randomization.Parameters; +using UnityEngine.Perception.Randomization.Randomizers; + + +[Serializable] +[AddRandomizerMenu("Perception/Robot Arm Object Position Randomizer")] +public class RobotArmObjectPositionRandomizer : InferenceRandomizer +{ + /* Chooses positions on the plane for placing all objects with the corresponding tag. + * - Each object has a radius (defined on the tag, computed per-object based on its bounds) + * - No object will be close enough to the edge of the plane to fall off + * - All objects will be within the min and max RobotReachability distance to the robot base link (as measured + * on the surface of the plane). + * - No object will be close enough to another tagged object to collide with it + * + * Example use case: placing objects on a table with a robot arm, at random valid positions + * where they can be reached by the robot arm. + * + * The plane can be manipulated in the editor for easy visualization of the placement surface. + * + * Assumptions: + * - The placement surface is parallel to the global x-z plane. + * - The robot arm is sitting on the placement surface + */ + + public GameObject plane; + public int maxPlacementTries = 100; + + public GameObject robotBase; + public float minRobotReachability; + public float maxRobotReachability; + public FloatParameter random; //[0, 1] + + private SurfaceObjectPlacer placer; + + + protected override void OnCreate() + { + ReachabilityConstraint maxReach = CreateReachabilityConstraint(robotBase.transform.position, maxRobotReachability, ReachabilityConstraint.LimitType.max); + ReachabilityConstraint minReach = CreateReachabilityConstraint(robotBase.transform.position, minRobotReachability, ReachabilityConstraint.LimitType.min); + placer = new SurfaceObjectPlacer(plane, random, minReach, maxReach, maxPlacementTries); + } + + + protected override void OnIterationStart() + { + OnCustomIteration(); + } + + public override void OnCustomIteration() + { + placer.IterationStart(); + + IEnumerable tags = tagManager.Query(); + + + (List reachableObjects, List otherObjects) = SeparateTags(tags); + + foreach (GameObject reachableObj in reachableObjects) + { + bool success = placer.PlaceObject(reachableObj, true); + if (!success) + { + return; + } + } + + foreach (GameObject otherObj in otherObjects) + { + bool success = placer.PlaceObject(otherObj, false); + if (!success) + { + return; + } + } + } + + + // HELPERS + + private (List reachableObjects, List otherObjects) SeparateTags(IEnumerable tags) + { + List reachableObjects = new List(); + List otherObjects = new List(); + + foreach (RobotArmObjectPositionRandomizerTag tag in tags) + { + GameObject obj = tag.gameObject; + if (tag.mustBeReachable) + { + reachableObjects.Add(obj); + } + else + { + otherObjects.Add(obj); + } + } + return (reachableObjects, otherObjects); + } + + public static ReachabilityConstraint CreateReachabilityConstraint(Vector3 robotBasePosition, float limit, ReachabilityConstraint.LimitType limitType) + { + ReachabilityConstraint constraint = new ReachabilityConstraint(); + constraint.robotX = robotBasePosition.x; + constraint.robotZ = robotBasePosition.z; + constraint.limitType = limitType; + constraint.robotReachabilityLimit = limit; + return constraint; + } + +} \ No newline at end of file diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/RobotArmObjectPositionRandomizer.cs.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/RobotArmObjectPositionRandomizer.cs.meta new file mode 100644 index 00000000..a6e439dc --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/RobotArmObjectPositionRandomizer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 66060ac7fbf4b4999b6c77f5e858e5d7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/RobotArmObjectPositionRandomizerTag.cs b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/RobotArmObjectPositionRandomizerTag.cs new file mode 100644 index 00000000..35bc8941 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/RobotArmObjectPositionRandomizerTag.cs @@ -0,0 +1,11 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Perception.Randomization.Randomizers; + +[AddComponentMenu("Perception/RandomizerTags/RobotArmObjectPositionRandomizerTag")] +[RequireComponent(typeof(Renderer))] +public class RobotArmObjectPositionRandomizerTag : RandomizerTag +{ + public bool mustBeReachable; +} diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/RobotArmObjectPositionRandomizerTag.cs.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/RobotArmObjectPositionRandomizerTag.cs.meta new file mode 100644 index 00000000..43371aa5 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/RobotArmObjectPositionRandomizerTag.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: daba81ca1c4ca4f98b498d2ac664220e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/SurfaceObjectPlacer.cs b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/SurfaceObjectPlacer.cs new file mode 100644 index 00000000..62f83486 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/SurfaceObjectPlacer.cs @@ -0,0 +1,236 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using UnityEngine.Perception.Randomization.Parameters; + + +public class PlacementConstraint +{ + /* Determines if a particular object placement on the x-z plane is valid. See + subclasses for details. */ + + public virtual bool Passes(float placementX, float placementZ, float objectRadius) + { + return true; + } +} + +public class CollisionConstraint : PlacementConstraint +{ + /* Checks if objects are placed far enough apart, so they cannot collide. */ + + public float x; + public float z; + public float radius; + + public override bool Passes(float placementX, float placementZ, float objectRadius) + { + Vector2 placementPt = new Vector2(placementX, placementZ); + Vector2 basePt = new Vector2(x, z); + float distance = Vector2.Distance(placementPt, basePt); + float minDistance = objectRadius + radius; + return distance > minDistance; + } +} + +public class ReachabilityConstraint : PlacementConstraint +{ + /* Checks if an object is placed close enough to the robot arm to be reached. */ + + public enum LimitType { min, max }; + + public float robotX; + public float robotZ; + public float robotReachabilityLimit; + public LimitType limitType; + + public override bool Passes(float placementX, float placementZ, float objectRadius) + { + Vector2 placementPt = new Vector2(placementX, placementZ); + Vector2 basePt = new Vector2(robotX, robotZ); + float distance = Vector2.Distance(placementPt, basePt); + if (limitType == LimitType.max) + { + bool pass = distance < robotReachabilityLimit; + return pass; + } + else + { + return distance > robotReachabilityLimit; + } + } +} + +public class SurfaceObjectPlacer +{ + private GameObject plane; + private FloatParameter random; //[0, 1] + private ReachabilityConstraint minRobotReachability; + private ReachabilityConstraint maxRobotReachability; + private int maxPlacementTries = 100; + + + private List collisionConstraints = new List(); + + + public SurfaceObjectPlacer( + GameObject plane, + FloatParameter random, + ReachabilityConstraint minRobotReachability, + ReachabilityConstraint maxRobotReachability, + int maxPlacementTries) + { + this.plane = plane; + this.random = random; + this.minRobotReachability = minRobotReachability; + this.maxRobotReachability = maxRobotReachability; + this.maxPlacementTries = maxPlacementTries; + } + + + public void IterationStart() + { + collisionConstraints = new List(); + } + + public bool PlaceObject(GameObject obj, bool respectMaxRobotReachability) + { + Bounds planeBounds = plane.GetComponent().bounds; + if (obj.activeInHierarchy) + { + // try to sample a valid point + Bounds objBounds = obj.GetComponent().bounds; + float radius = objBounds.extents.magnitude; + float heightAbovePlane = objBounds.extents.y; + + List constraints = GetAllConstraints(respectMaxRobotReachability); + Vector3? point = SampleValidGlobalPointOnPlane(radius, constraints, planeBounds, respectMaxRobotReachability); + + if (point.HasValue) + { + // place object + Vector3 foundPoint = point ?? Vector3.zero; + obj.transform.position = new Vector3(foundPoint.x, foundPoint.y + heightAbovePlane, foundPoint.z); + + // update constraints so subsequently placed object cannot collide with this one + CollisionConstraint newConstraint = new CollisionConstraint(); + newConstraint.x = foundPoint.x; + newConstraint.z = foundPoint.z; + newConstraint.radius = radius; + collisionConstraints.Add(newConstraint); + + } + else + { + return false; + } + } + return true; + + } + + // PRIVATE HELPERS + + private Vector3? SampleValidGlobalPointOnPlane(float objectRadius, List constraints, Bounds planeBounds, bool respectMaxRobotReachability) + { + // return a valid point and if not found one it return null + int tries = 0; + + while (tries < maxPlacementTries) + { + Vector3 point = SampleGlobalPointOnPlane(objectRadius, planeBounds, respectMaxRobotReachability); + bool valid = PassesConstraints(point, objectRadius, constraints); + if (valid) { return point; } + + tries += 1; + } + return null; + } + + private List GetAllConstraints(bool respectMaxRobotReachability) + { + // return a list of all the constraints: combination of permanent constraint and additional constraint like the maxReachabilityConstraint or the + // collision constraint + List allConstraints = new List(); + allConstraints.AddRange(collisionConstraints); + allConstraints.Add(minRobotReachability); + if (respectMaxRobotReachability) + { + allConstraints.Add(maxRobotReachability); + } + return allConstraints; + } + + private Vector3 SampleGlobalPointOnPlane(float minEdgeDistance, Bounds planeBounds, bool respectMaxRobotReachability) + { + Rect planePlacementZone = PlanePlacementZone(planeBounds, minEdgeDistance); + if (respectMaxRobotReachability) + { + Rect withinMaxReachZone = MaxReachabilityPlacementZone(maxRobotReachability); + planePlacementZone = Intersection(planePlacementZone, withinMaxReachZone); + } + + Vector2 randomPlanePoint = RandomPointInRect(planePlacementZone); + Vector3 globalPt = new Vector3(randomPlanePoint.x, planeBounds.center.y, randomPlanePoint.y); + return globalPt; + } + + + private static Rect MaxReachabilityPlacementZone(ReachabilityConstraint maxRobotReachability) + { + float x = maxRobotReachability.robotX - maxRobotReachability.robotReachabilityLimit; + float z = maxRobotReachability.robotZ - maxRobotReachability.robotReachabilityLimit; + float size = maxRobotReachability.robotReachabilityLimit * 2; + return new Rect(x, z, size, size); + } + + private static Rect PlanePlacementZone(Bounds planeBounds, float minEdgeDistance) + { + float x = planeBounds.center.x - planeBounds.extents.x + minEdgeDistance; + float z = planeBounds.center.z - planeBounds.extents.z + minEdgeDistance; + float dx = (planeBounds.extents.x - minEdgeDistance) * 2; + float dz = (planeBounds.extents.z - minEdgeDistance) * 2; + return new Rect(x, z, dx, dz); + } + + private Vector2 RandomPointInRect(Rect rect) + { + float x = random.Sample() * rect.width + rect.xMin; + float y = random.Sample() * rect.height + rect.yMin; + return new Vector2(x, y); + } + + private static Rect Intersection(Rect rectA, Rect rectB) + { + float minX = Mathf.Max(rectA.xMin, rectB.xMin); + float maxX = Mathf.Min(rectA.xMax, rectB.xMax); + float minY = Mathf.Max(rectA.yMin, rectB.yMin); + float maxY = Mathf.Min(rectA.yMax, rectB.yMax); + + bool xValid = (minX < maxX); + bool yValid = (minY < maxY); + bool valid = (xValid && yValid); + if (!valid) + { + throw new Exception("Rectangles have no intersection!"); + } + + return new Rect(minX, minY, maxX - minX, maxY - minY); + + } + + private static bool PassesConstraints(Vector3 point, float objectRadius, List constraints) + { + /* Checks if sampled point on plane passes all provided constraints. */ + + foreach (PlacementConstraint constraint in constraints) + { + bool pass = constraint.Passes(point.x, point.z, objectRadius); + if (!pass) { return false; } + } + return true; + } + + +} \ No newline at end of file diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/SurfaceObjectPlacer.cs.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/SurfaceObjectPlacer.cs.meta new file mode 100644 index 00000000..8aa5c9f5 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/SurfaceObjectPlacer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bab7499d2b6824ce78efd5d3907cd099 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/UniformPoseRandomizer.cs b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/UniformPoseRandomizer.cs new file mode 100644 index 00000000..ce2c411d --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/UniformPoseRandomizer.cs @@ -0,0 +1,59 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using UnityEngine.Perception.Randomization.Parameters; +using UnityEngine.Perception.Randomization.Randomizers; + +[Serializable] +[AddRandomizerMenu("Perception/Uniform Pose Randomizer")] +public class UniformPoseRandomizer : InferenceRandomizer +{ + /* Randomizes object's position and rotation relative to a fixed starting pose, over the specified range. + * + * Example use-case: + * Make very small random adjustments to the camera's pose, to make the learned model more robust + * to small inaccuracies in placing the real camera. + */ + + public float positionRange = 0.005f; + public float rotationRangeDegrees = 1.0f; + + public FloatParameter random; //(-1, 1) + + protected override void OnIterationStart() + { + OnCustomIteration(); + } + + public override void OnCustomIteration() + { + IEnumerable tags = tagManager.Query(); + foreach (UniformPoseRandomizerTag tag in tags) + { + Vector3 adjustedPosition = AdjustedVector(tag.rootPosePosition, positionRange); + Vector3 adjustedRotation = AdjustedVector(tag.rootPoseRotation, rotationRangeDegrees); + tag.gameObject.transform.position = adjustedPosition; + tag.gameObject.transform.eulerAngles = adjustedRotation; + } + } + + // HELPERS + + private Vector3 AdjustedVector(Vector3 rootVector, float range) + { + float x = AdjustedValue(rootVector.x, range); + float y = AdjustedValue(rootVector.y, range); + float z = AdjustedValue(rootVector.z, range); + Vector3 adjustedVector = new Vector3(x, y, z); + return adjustedVector; + } + + private float AdjustedValue(float rootValue, float range) + { + float change = range * random.Sample(); + float adjustedVal = rootValue + change; + return adjustedVal; + } + +} \ No newline at end of file diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/UniformPoseRandomizer.cs.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/UniformPoseRandomizer.cs.meta new file mode 100644 index 00000000..ea1e4c7b --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/UniformPoseRandomizer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 526e7ffe2245d40b08646a6fe1f932e1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/UniformPoseRandomizerTag.cs b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/UniformPoseRandomizerTag.cs new file mode 100644 index 00000000..c9637ed2 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/UniformPoseRandomizerTag.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Perception.Randomization.Randomizers; + +[AddComponentMenu("Perception/RandomizerTags/UniformPoseRandomizerTag")] +public class UniformPoseRandomizerTag : RandomizerTag +{ + [HideInInspector] + public Vector3 rootPosePosition; + public Vector3 rootPoseRotation; + + private void Start() + { + rootPosePosition = transform.position; + rootPoseRotation = transform.eulerAngles; + } + +} \ No newline at end of file diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/UniformPoseRandomizerTag.cs.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/UniformPoseRandomizerTag.cs.meta new file mode 100644 index 00000000..5fcbc34c --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/UniformPoseRandomizerTag.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7959b9c673ca0431aa9172059fbcb4fa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/YRotationRandomizer.cs b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/YRotationRandomizer.cs new file mode 100644 index 00000000..71c8f250 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/YRotationRandomizer.cs @@ -0,0 +1,33 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using UnityEngine.Perception.Randomization.Parameters; +using UnityEngine.Perception.Randomization.Randomizers; + + +[Serializable] +[AddRandomizerMenu("Perception/Y Rotation Randomizer")] +public class YRotationRandomizer : InferenceRandomizer +{ + public FloatParameter random; // in range (0, 1) + + protected override void OnIterationStart() + { + OnCustomIteration(); + } + + public override void OnCustomIteration() + { + /* Runs at the start of every iteration. */ + + IEnumerable tags = tagManager.Query(); + foreach (YRotationRandomizerTag tag in tags) + { + float yRotation = random.Sample() * 360.0f; + + // sets rotation + tag.SetYRotation(yRotation); + } + } +} diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/YRotationRandomizer.cs.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/YRotationRandomizer.cs.meta new file mode 100644 index 00000000..7d496e71 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/YRotationRandomizer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cbac82f4123604b9fa3b5d118c948c15 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/YRotationRandomizerTag.cs b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/YRotationRandomizerTag.cs new file mode 100644 index 00000000..0580af75 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/YRotationRandomizerTag.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Perception.Randomization.Randomizers; + +public class YRotationRandomizerTag : RandomizerTag +{ + private Vector3 originalRotation; + + private void Start() + { + originalRotation = transform.eulerAngles; + } + + public void SetYRotation(float yRotation) + { + transform.eulerAngles = new Vector3(originalRotation.x, yRotation, originalRotation.z); + } +} \ No newline at end of file diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/YRotationRandomizerTag.cs.meta b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/YRotationRandomizerTag.cs.meta new file mode 100644 index 00000000..4943d3d9 --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/PerceptionRandomizers/YRotationRandomizerTag.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 417413544452d4d3b9d7955bb12c9077 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/TrajectoryPlanner.cs b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/TrajectoryPlanner.cs new file mode 100644 index 00000000..1ab9fe2e --- /dev/null +++ b/tutorials/pose_estimation/PoseEstimationDemoProject/Assets/TutorialAssets/Scripts/TrajectoryPlanner.cs @@ -0,0 +1,393 @@ +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using UnityEngine.UI; + +using ROSGeometry; +using RosMessageTypes.Ur3Moveit; +using Quaternion = UnityEngine.Quaternion; +using Transform = UnityEngine.Transform; +using Vector3 = UnityEngine.Vector3; + +public class TrajectoryPlanner : MonoBehaviour +{ + // ROS Connector + private ROSConnection ros; + + // Hardcoded variables + private int numRobotJoints = 6; + private readonly float jointAssignmentWait = 0.06f; + private readonly float poseAssignmentWait = 0.5f; + private readonly float gripperAngle = 14f; + // Offsets to ensure gripper is above grasp points + private readonly Vector3 pickPoseOffset = new Vector3(0, 0.255f, 0); + private readonly Vector3 placePoseOffset = new Vector3(0, 0.275f, 0); + // Multipliers correspond to the URDF mimic tag for each joint + private float[] multipliers = new float[] { 1f, 1f, -1f, -1f, 1f, -1f }; + // Orientation is hardcoded for this example so the gripper is always directly above the placement object + private readonly Quaternion pickOrientation = new Quaternion(-0.5f,-0.5f,0.5f,-0.5f); + + // Variables required for ROS communication + public string rosServiceName = "ur3_moveit"; + private const int isBigEndian = 0; + private const int step = 4; + + public GameObject robot; + public GameObject target; + public Transform goal; + + // Articulation Bodies + private ArticulationBody[] jointArticulationBodies; + ArticulationBody[] articulationChain; + private List gripperJoints; + + // UI elements + private Button InitializeButton; + private Button RandomizeButton; + private Button ServiceButton; + private Text ActualPos; + private Text ActualRot; + private Text EstimatedPos; + private Text EstimatedRot; + + private RenderTexture renderTexture; + + public GameObject scenario; + + private enum Poses + { + PreGrasp, + Grasp, + PickUp, + Place, + PostPlace + }; + + /// + /// Opens and closes the attached gripper tool based on a gripping angle. + /// + /// + /// + public IEnumerator IterateToGrip(bool toClose) + { + var grippingAngle = toClose ? gripperAngle : 0f; + for (int i = 0; i < gripperJoints.Count; i++) + { + var curXDrive = gripperJoints[i].xDrive; + curXDrive.target = multipliers[i] * grippingAngle; + gripperJoints[i].xDrive = curXDrive; + } + yield return new WaitForSeconds(jointAssignmentWait); + } + + /// + /// Button callback for setting the robot to default position + /// + public void Initialize(){ + StartCoroutine(MoveToInitialPosition()); + } + + /// + /// Button callback for the Cube Randomization + /// + public void RandomizeCube(){ + InferenceRandomization.Move(scenario); + ActualPos.text = target.transform.position.ToString(); + ActualRot.text = target.transform.eulerAngles.ToString(); + } + + /// + /// Button callback for the Pose Estimation + /// + public void PoseEstimation(){ + Debug.Log("Capturing screenshot..."); + + InitializeButton.interactable = false; + RandomizeButton.interactable = false; + ServiceButton.interactable = false; + ActualPos.text = target.transform.position.ToString(); + ActualRot.text = target.transform.eulerAngles.ToString(); + EstimatedPos.text = "-"; + EstimatedRot.text = "-"; + + // Capture the screenshot and pass it to the pose estimation service + byte[] rawImageData = CaptureScreenshot(); + InvokePoseEstimationService(rawImageData); + } + + private IEnumerator MoveToInitialPosition() + { + bool isRotationFinished = false; + while (!isRotationFinished) + { + isRotationFinished = ResetRobotToDefaultPosition(); + yield return new WaitForSeconds(jointAssignmentWait); + } + ServiceButton.interactable = true; + } + + private bool ResetRobotToDefaultPosition() + { + bool isRotationFinished = true; + var rotationSpeed = 180f; + + for (int i = 1; i < numRobotJoints + 1; i++) + { + var tempXDrive = articulationChain[i].xDrive; + float currentRotation = tempXDrive.target; + + float rotationChange = rotationSpeed * Time.fixedDeltaTime; + + if (currentRotation > 0f) rotationChange *= -1; + + if (Mathf.Abs(currentRotation) < rotationChange) + rotationChange = 0; + else + isRotationFinished = false; + + // the new xDrive target is the currentRotation summed with the desired change + float rotationGoal = currentRotation + rotationChange; + tempXDrive.target = rotationGoal; + articulationChain[i].xDrive = tempXDrive; + } + return isRotationFinished; + } + + /// + /// Create a new PoseEstimationServiceRequest with the captured screenshot as bytes and instantiates + /// a sensor_msgs/image. + /// + /// Call the PoseEstimationService using the ROSConnection and calls PoseEstimationCallback on the + /// PoseEstimationServiceResponse. + /// + /// + private void InvokePoseEstimationService(byte[] imageData) + { + uint imageHeight = (uint)renderTexture.height; + uint imageWidth = (uint)renderTexture.width; + + RosMessageTypes.Sensor.Image rosImage = new RosMessageTypes.Sensor.Image(new RosMessageTypes.Std.Header(), imageWidth, imageHeight, "RGBA", isBigEndian, step, imageData); + PoseEstimationServiceRequest poseServiceRequest = new PoseEstimationServiceRequest(rosImage); + ros.SendServiceMessage("pose_estimation_srv", poseServiceRequest, PoseEstimationCallback); + } + + void PoseEstimationCallback(PoseEstimationServiceResponse response) + { + if (response != null) + { + // The position output by the model is the position of the cube relative to the camera so we need to extract its global position + var estimatedPosition = Camera.main.transform.TransformPoint(response.estimated_pose.position.From()); + var estimatedRotation = Camera.main.transform.rotation * response.estimated_pose.orientation.From(); + + PublishJoints(estimatedPosition, estimatedRotation); + + EstimatedPos.text = estimatedPosition.ToString(); + EstimatedRot.text = estimatedRotation.eulerAngles.ToString(); + } + else { + InitializeButton.interactable = true; + RandomizeButton.interactable = true; + } + } + + /// + /// Capture the main camera's render texture and convert to bytes. + /// + /// imageBytes + private byte[] CaptureScreenshot() + { + Camera.main.targetTexture = renderTexture; + RenderTexture currentRT = RenderTexture.active; + RenderTexture.active = renderTexture; + Camera.main.Render(); + Texture2D mainCameraTexture = new Texture2D(renderTexture.width, renderTexture.height); + mainCameraTexture.ReadPixels(new Rect(0, 0, renderTexture.width, renderTexture.height), 0, 0); + mainCameraTexture.Apply(); + RenderTexture.active = currentRT; + // Get the raw byte info from the screenshot + byte[] imageBytes = mainCameraTexture.GetRawTextureData(); + Camera.main.targetTexture = null; + return imageBytes; + } + + /// + /// Get the current values of the robot's joint angles. + /// + /// UR3MoveitJoints + UR3MoveitJoints CurrentJointConfig() + { + UR3MoveitJoints joints = new UR3MoveitJoints(); + + joints.joint_00 = jointArticulationBodies[0].xDrive.target; + joints.joint_01 = jointArticulationBodies[1].xDrive.target; + joints.joint_02 = jointArticulationBodies[2].xDrive.target; + joints.joint_03 = jointArticulationBodies[3].xDrive.target; + joints.joint_04 = jointArticulationBodies[4].xDrive.target; + joints.joint_05 = jointArticulationBodies[5].xDrive.target; + + return joints; + } + + public void PublishJoints(Vector3 targetPos, Quaternion targetRot) + { + MoverServiceRequest request = new MoverServiceRequest(); + request.joints_input = CurrentJointConfig(); + + // Pick Pose + request.pick_pose = new RosMessageTypes.Geometry.Pose + { + position = (targetPos + pickPoseOffset).To(), + orientation = Quaternion.Euler(90, targetRot.eulerAngles.y, 0).To() + }; + + // Place Pose + request.place_pose = new RosMessageTypes.Geometry.Pose + { + position = (goal.position + placePoseOffset).To(), + orientation = pickOrientation.To() + }; + + ros.SendServiceMessage(rosServiceName, request, TrajectoryResponse); + } + + void TrajectoryResponse(MoverServiceResponse response) + { + if (response.trajectories != null && response.trajectories.Length > 0) + { + Debug.Log("Trajectory returned."); + StartCoroutine(ExecuteTrajectories(response)); + } + else + { + Debug.LogError("No trajectory returned from MoverService."); + InitializeButton.interactable = true; + RandomizeButton.interactable = true; + ServiceButton.interactable = true; + } + } + + /// + /// Execute the returned trajectories from the MoverService. + /// + /// The expectation is that the MoverService will return four trajectory plans, + /// PreGrasp, Grasp, PickUp, and Place, + /// where each plan is an array of robot poses. A robot pose is the joint angle values + /// of the six robot joints. + /// + /// Executing a single trajectory will iterate through every robot pose in the array while updating the + /// joint values on the robot. + /// + /// + /// MoverServiceResponse received from ur3_moveit mover service running in ROS + /// + private IEnumerator ExecuteTrajectories(MoverServiceResponse response) + { + if (response.trajectories != null) + { + // For every trajectory plan returned + for (int poseIndex = 0 ; poseIndex < response.trajectories.Length; poseIndex++) + { + // For every robot pose in trajectory plan + for (int jointConfigIndex = 0 ; jointConfigIndex < response.trajectories[poseIndex].joint_trajectory.points.Length; jointConfigIndex++) + { + var jointPositions = response.trajectories[poseIndex].joint_trajectory.points[jointConfigIndex].positions; + float[] result = jointPositions.Select(r=> (float)r * Mathf.Rad2Deg).ToArray(); + + // Set the joint values for every joint + for (int joint = 0; joint < jointArticulationBodies.Length; joint++) + { + var joint1XDrive = jointArticulationBodies[joint].xDrive; + joint1XDrive.target = result[joint]; + jointArticulationBodies[joint].xDrive = joint1XDrive; + } + // Wait for robot to achieve pose for all joint assignments + yield return new WaitForSeconds(jointAssignmentWait); + } + + // Close the gripper if completed executing the trajectory for the Grasp pose + if (poseIndex == (int)Poses.Grasp){ + StartCoroutine(IterateToGrip(true)); + yield return new WaitForSeconds(jointAssignmentWait); + } + else if (poseIndex == (int)Poses.Place){ + yield return new WaitForSeconds(poseAssignmentWait); + // Open the gripper to place the target cube + StartCoroutine(IterateToGrip(false)); + } + // Wait for the robot to achieve the final pose from joint assignment + yield return new WaitForSeconds(poseAssignmentWait); + } + + // Re-enable buttons + InitializeButton.interactable = true; + RandomizeButton.interactable = true; + yield return new WaitForSeconds(jointAssignmentWait); + } + } + + /// + /// Find all robot joints in Awake() and add them to the jointArticulationBodies array. + /// Find all gripper joints and assign them to their respective articulation body objects. + /// + void Awake() + { + jointArticulationBodies = new ArticulationBody[numRobotJoints]; + string shoulder_link = "world/base_link/shoulder_link"; + jointArticulationBodies[0] = robot.transform.Find(shoulder_link).GetComponent(); + + string arm_link = shoulder_link + "/upper_arm_link"; + jointArticulationBodies[1] = robot.transform.Find(arm_link).GetComponent(); + + string elbow_link = arm_link + "/forearm_link"; + jointArticulationBodies[2] = robot.transform.Find(elbow_link).GetComponent(); + + string forearm_link = elbow_link + "/wrist_1_link"; + jointArticulationBodies[3] = robot.transform.Find(forearm_link).GetComponent(); + + string wrist_link = forearm_link + "/wrist_2_link"; + jointArticulationBodies[4] = robot.transform.Find(wrist_link).GetComponent(); + + string hand_link = wrist_link + "/wrist_3_link"; + jointArticulationBodies[5] = robot.transform.Find(hand_link).GetComponent(); + + articulationChain = robot.GetComponent().GetComponentsInChildren(); + + var gripperJointNames = new string[] { "right_outer_knuckle", "right_inner_finger", "right_inner_knuckle", "left_outer_knuckle", "left_inner_finger", "left_inner_knuckle" }; + gripperJoints = new List(); + + foreach (ArticulationBody articulationBody in robot.GetComponentsInChildren()) + { + if (gripperJointNames.Contains(articulationBody.name)) + { + gripperJoints.Add(articulationBody); + } + } + } + + void Start() + { + // Get ROS connection static instance + ros = ROSConnection.instance; + + // Assign UI elements + InitializeButton = GameObject.Find("ROSObjects/Canvas/ButtonPanel/DefaultButton").GetComponent