Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
149 commits
Select commit Hold shift + click to select a range
6d40442
added pose estimation tutorial files
Feb 4, 2021
8a76b28
added pose_estimation tutorial to main readme
Feb 4, 2021
2b24e31
update the links
Feb 5, 2021
4369946
change the lnik towards the tutorial
Feb 5, 2021
8225dd6
update the image creation unity project
Feb 5, 2021
970a9c2
add button error to the troubleshotting
Feb 5, 2021
7c6a43e
Update tutorials/pose_estimation/Documentation/3_data_collection_mode…
JonathanLeban Feb 5, 2021
abb578d
Update tutorials/pose_estimation/Documentation/3_data_collection_mode…
JonathanLeban Feb 5, 2021
971ceb3
Update tutorials/pose_estimation/Documentation/3_data_collection_mode…
JonathanLeban Feb 5, 2021
c02d956
Update README.md
JonathanLeban Feb 5, 2021
298f8dc
changes to the link of the cli
Feb 5, 2021
4a12ebd
Merge pull request #118 from Unity-Technologies/dextra/PoseEstimation…
JonathanLeban Feb 5, 2021
b24c1a3
fixing links on full tutorial
Feb 5, 2021
d820151
resize image
Feb 5, 2021
cd6d198
size image again
Feb 5, 2021
8cdd3ef
fixed install Unity link
Feb 5, 2021
a1c4fc0
wording tweak
Feb 5, 2021
0a7ce10
simplified asset download instructions
Feb 5, 2021
88a3525
direct model download in phase4
Feb 5, 2021
3fc9e64
direct model download link in quick demo
Feb 5, 2021
f47580d
simplified sentence
Feb 5, 2021
090593e
resize light randomization settings image
Feb 5, 2021
b170a60
some wordsmithing
Feb 5, 2021
cdc5b7d
moved conda install instruction
Feb 5, 2021
aed53cc
need to navigate to model dir earlier
Feb 5, 2021
0ade364
fixed another link
Feb 5, 2021
5a479b2
full path to model dr
Feb 5, 2021
ff6645d
reworded docker build command
Feb 5, 2021
cf194c7
simplified command instructions
Feb 5, 2021
508a572
fix local links
Feb 5, 2021
e5d53db
wordsmithing
Feb 5, 2021
87f7045
wordsmithing
Feb 5, 2021
c0c8bb3
img resize
Feb 5, 2021
d2e561b
smaller docker settings image
Feb 5, 2021
279d723
network image
Feb 5, 2021
0545126
link to tensorbaord instructions
Feb 5, 2021
1a426b3
more text on model eval
Feb 5, 2021
34258b0
performance description
Feb 5, 2021
3d44fc7
cleanup
Feb 5, 2021
c98b189
new table titles
Feb 5, 2021
1ee4027
revamped model readme
Feb 5, 2021
9e43515
change the gid prefab
Feb 5, 2021
c385f31
formatting fix
Feb 5, 2021
a06af79
performance units
Feb 5, 2021
b445006
clarify about cube
Feb 5, 2021
f5d5445
small change
Feb 5, 2021
c7bc4bc
link fixes
Feb 5, 2021
aa4bea6
another link fix
Feb 5, 2021
24caa8e
capitalized perception package name
Feb 5, 2021
683fc57
Merge pull request #119 from Unity-Technologies/dextra/sarah/tutorial…
sarahwolf32 Feb 5, 2021
d35d5e2
Amanda/pose estimation (#120)
at669 Feb 5, 2021
2feebb6
Merge pull request #121 from Unity-Technologies/dextra/PoseEstimation…
JonathanLeban Feb 5, 2021
f4e07b9
changes to the docker instructions
Feb 6, 2021
9cc8e2c
switched to new version and fixed namespace errors
Feb 8, 2021
144cfe9
recreated scenario to fix errors
Feb 8, 2021
d39c6cf
pin version in instructions
Feb 8, 2021
82eafa1
Merge pull request #124 from Unity-Technologies/perception_package_up…
sarahwolf32 Feb 8, 2021
d057655
update the tutorial based on the perception package update
Feb 8, 2021
71fe304
simplify wording
Feb 8, 2021
4688c3e
update the gif
Feb 8, 2021
563d2c5
Update tutorials/pose_estimation/Documentation/4_pick_and_place.md
JonathanLeban Feb 8, 2021
0cef289
Merge pull request #126 from Unity-Technologies/jonathan/perception_u…
JonathanLeban Feb 8, 2021
ab092d1
Merge pull request #127 from Unity-Technologies/dextra/wording_sugges…
JonathanLeban Feb 8, 2021
2f11284
Merge pull request #123 from Unity-Technologies/dextra/PoseEstimation…
JonathanLeban Feb 8, 2021
4e09941
delete the experimental
Feb 8, 2021
a6a1a33
Merge pull request #128 from Unity-Technologies/dextra/correct_files_…
sarahwolf32 Feb 8, 2021
259621b
change the ros image
Feb 9, 2021
39f8403
upgraded to perception package 0.7.0-preview.2
Feb 9, 2021
19fabc7
updated instructions for new perception package version
Feb 9, 2021
0eac73d
using tgs solver
Feb 9, 2021
8e621b9
updated instruction s to use TGS
Feb 9, 2021
403d4e5
Merge pull request #130 from Unity-Technologies/perception_update_2
JonathanLeban Feb 9, 2021
48035c4
wording tweak
Feb 9, 2021
38ed72a
Merge pull request #131 from Unity-Technologies/dextra/tgs
JonathanLeban Feb 9, 2021
861752d
Revert "Dextra/tgs"
sarahwolf32 Feb 9, 2021
93e3b96
Update tutorials/pose_estimation/Documentation/1_set_up_the_scene.md
sarahwolf32 Feb 9, 2021
f7e1f34
Merge pull request #132 from Unity-Technologies/revert-131-dextra/tgs
sarahwolf32 Feb 9, 2021
eea9f1d
changes the numbering
Feb 9, 2021
574ba30
changes to the figure
Feb 9, 2021
a3ccbc3
change phase 2,3, 4
Feb 9, 2021
67dfe78
update all phases
Feb 9, 2021
2a2feec
update all phases
Feb 9, 2021
bbf3eae
update all phases
Feb 9, 2021
080a460
update all phases
Feb 9, 2021
e161aa6
add test note
Feb 9, 2021
8b33fdc
add test note
Feb 9, 2021
44d5ace
add test note
Feb 9, 2021
1019ba2
renumber dependency install
Feb 9, 2021
173193c
delete remnant text
Feb 10, 2021
4d48df8
Merge pull request #134 from Unity-Technologies/PoseEstimation/number…
JonathanLeban Feb 10, 2021
af4c78c
change the note format
Feb 10, 2021
90c65c6
change the note format
Feb 10, 2021
8114aa7
changes to the phase 1
Feb 10, 2021
75e0307
solve merge conflicts
Feb 10, 2021
a548111
solve merge conflicts
Feb 10, 2021
5c7c1da
changes to the perception package version
Feb 10, 2021
d4c326d
update the links
Feb 10, 2021
325d53e
Update tutorials/pose_estimation/Documentation/quick_demo_train.md
JonathanLeban Feb 10, 2021
0b0903c
Update tutorials/pose_estimation/Documentation/0_ros_setup.md
JonathanLeban Feb 10, 2021
ea10c6d
changes to the image
Feb 10, 2021
b1d15e8
changes to the images git
Feb 10, 2021
521fe25
Update tutorials/pose_estimation/Documentation/quick_demo_train.md
JonathanLeban Feb 10, 2021
716d4c2
Remove gazebo dependencies from launch (#135)
at669 Feb 10, 2021
b6e27c1
update the git image and notes
Feb 10, 2021
8ec3219
change the readme
Feb 10, 2021
1beeb03
change the readme
Feb 10, 2021
30a5e22
change the readme
Feb 10, 2021
d1d0a5f
change read me pos estimation
Feb 10, 2021
b86a4b1
get back the old version
Feb 10, 2021
db8ee54
switch back to the old version and fixed link to the git
Feb 10, 2021
89f8b24
integrate comments from bug bash
Feb 10, 2021
c7b2e43
changing the ending note
Feb 10, 2021
83c7a0a
change the text regarding the pixel ratio
Feb 10, 2021
0a053e7
PR feedback (#136)
at669 Feb 10, 2021
f0f96e4
Merge pull request #129 from Unity-Technologies/jonathan/updates_figure
sarahwolf32 Feb 10, 2021
f756893
Merge branch 'dextra/PoseEstimation' into PoseEstimation/numbering
sarahwolf32 Feb 10, 2021
c850417
fixed package install step numbering
Feb 10, 2021
12c8e0b
start over numbering at light randomizer
Feb 10, 2021
fecd52f
optional step still gets a number
Feb 10, 2021
354729f
fix subheading sizes in phase3
Feb 10, 2021
1e26fa4
fixed skipped action
Feb 10, 2021
2d35c75
decreased size of light rand section
Feb 10, 2021
352ad1e
Merge pull request #137 from Unity-Technologies/dextra/numbering/sarah
sarahwolf32 Feb 10, 2021
5d39b35
Merge pull request #133 from Unity-Technologies/PoseEstimation/numbering
sarahwolf32 Feb 10, 2021
be623af
delete some stuff in the quick full demo file
Feb 10, 2021
3225ac1
solve merge conflicts
Feb 10, 2021
13c0b48
solve merge conflicts and link error
Feb 10, 2021
98d63c6
Update tutorials/pose_estimation/Documentation/2_set_up_the_data_coll…
JonathanLeban Feb 10, 2021
7dee86e
Update README.md
JonathanLeban Feb 10, 2021
f946786
Update README.md
JonathanLeban Feb 10, 2021
e88b205
Update README.md
JonathanLeban Feb 10, 2021
bdeb5c7
Update README.md
JonathanLeban Feb 10, 2021
1d2b352
Update tutorials/pose_estimation/Documentation/4_pick_and_place.md
JonathanLeban Feb 10, 2021
ec0caa4
add final message full demo
Feb 10, 2021
d0920eb
Merge pull request #138 from Unity-Technologies/dextra/changes_bug_bash
sarahwolf32 Feb 10, 2021
d5fbe3a
changes to the image
Feb 10, 2021
5f32d5a
Merge pull request #139 from Unity-Technologies/dextra/jonathan_last_…
sarahwolf32 Feb 10, 2021
51dc0e4
changes to the prefab and the instruction to switch do inference part
Feb 10, 2021
19d07fa
change the instructions for the data collection and the quick demo file
Feb 10, 2021
aa9ef20
change the quick demo file
Feb 10, 2021
6cae3b8
change the quick demo file
Feb 11, 2021
da4c729
Update tutorials/pose_estimation/Documentation/quick_demo_train.md
JonathanLeban Feb 11, 2021
21aa4ea
Merge pull request #140 from Unity-Technologies/dextra/jonathan_last_…
JonathanLeban Feb 11, 2021
e96738e
Ubuntu IP issues FAQ (#141)
at669 Feb 11, 2021
dd30259
estimated time and a few clarifications
Feb 11, 2021
01ee2b3
unicode hourglass
Feb 11, 2021
f3dd858
Merge pull request #142 from Unity-Technologies/dextra/more_quick_dem…
sarahwolf32 Feb 11, 2021
f7a5389
made suggested wording change
Feb 11, 2021
c6f6be4
Merge pull request #143 from Unity-Technologies/dextra/wording_tweak
JonathanLeban Feb 11, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
23 changes: 18 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
[Apache License 2.0](LICENSE)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this showing up as a change?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good question, it shouldn't be. Hmm.

7 changes: 7 additions & 0 deletions tutorials/pose_estimation/.gitignore
Original file line number Diff line number Diff line change
@@ -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/
67 changes: 67 additions & 0 deletions tutorials/pose_estimation/Documentation/0_ros_setup.md
Original file line number Diff line number Diff line change
@@ -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: <your 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
<launch>
<rosparam file="$(find ur3_moveit)/config/params.yaml" command="load"/>
'<include file="$(find ur3_moveit)/launch/demo.launch" />
<node name="server_endpoint" pkg="ur3_moveit" type="server_endpoint.py" args="--wait" output="screen" respawn="true" />
<node name="pose_estimation" pkg="ur3_moveit" type="pose_estimation_script.py" args="--wait" output="screen"/>
<node name="mover" pkg="ur3_moveit" type="mover.py" args="--wait" output="screen" respawn="true" respawn_delay="2.0"/>
</launch>
```

>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.
189 changes: 189 additions & 0 deletions tutorials/pose_estimation/Documentation/1_set_up_the_scene.md
Original file line number Diff line number Diff line change
@@ -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)

---

### <a name="reqs">Requirements</a>

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)


### <a name="step-1">Create a New Project</a>
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.

<p align="center">
<img src="Images/1_create_new_project.png" align="center" width=950/>
</p>

### <a name="step-2">Download the Perception, the URDF and the TCP connector Packages</a>

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).

<p align="center">
<img src="Gifs/1_package_imports.gif"/>
</p>


#### Install Dependencies
Install the following packages with the provided git URLs:

1. [Perception package](https://github.com/Unity-Technologies/com.unity.perception) - `[email protected]`
* 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.

### <a name="step-3">Set up Ground Truth Render Feature</a>

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.

<p align="center">
<img src="Images/1_scene_overview.png"/>
</p>


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:

<p align="center">
<img src="Images/1_forward_renderer.png"/>
</p>

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:

<p align="center">
<img src="Images/1_forward_renderer_inspector.png" width=430 height=350/>
</p>


### <a name="step-4">Set up the Scene</a>

#### 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:
<p align="center">
<img src="Images/1_hierarchy.png" width=500 height=200/>
</p>

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.

<p align="center">
<img src="Images/1_camera_settings.png" height=117 width=500/>
</p>

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

<p align="center">
<img src="Images/1_directional_light.png" height=217 width=500/>
</p>

#### 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:

<p align="center">
<img src="Images/1_assets_preview.png"/>
</p>

#### 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`.


<p align="center">
<img src="Gifs/1_import_prefabs.gif"/>
</p>

>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.

<p align="center">
<img src="Gifs/1_URDF_importer.gif" width=800 height=548/>
</p>

>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.

<p align="center">
<img src="Gifs/1_robot_settings.gif" width=800 height=465/>
</p>


### Proceed to [Part 2](2_set_up_the_data_collection_scene.md).


Loading