Buckets:
| <meta charset="utf-8" /><meta http-equiv="content-security-policy" content=""><meta name="hf:doc:metadata" content="{"local":"reinforcement-learning-rl-with-simulate","sections":[{"local":"tips","title":"Tips"}],"title":"Reinforcement Learning (RL) with 🤗 Simulate"}" data-svelte="svelte-1phssyn"> | |
| <link rel="modulepreload" href="/docs/simulate/main/en/_app/assets/pages/__layout.svelte-hf-doc-builder.css"> | |
| <link rel="modulepreload" href="/docs/simulate/main/en/_app/start-hf-doc-builder.js"> | |
| <link rel="modulepreload" href="/docs/simulate/main/en/_app/chunks/vendor-hf-doc-builder.js"> | |
| <link rel="modulepreload" href="/docs/simulate/main/en/_app/chunks/paths-hf-doc-builder.js"> | |
| <link rel="modulepreload" href="/docs/simulate/main/en/_app/pages/__layout.svelte-hf-doc-builder.js"> | |
| <link rel="modulepreload" href="/docs/simulate/main/en/_app/pages/quicktour.mdx-hf-doc-builder.js"> | |
| <link rel="modulepreload" href="/docs/simulate/main/en/_app/chunks/IconCopyLink-hf-doc-builder.js"> | |
| <link rel="modulepreload" href="/docs/simulate/main/en/_app/chunks/CodeBlock-hf-doc-builder.js"> | |
| <h1 class="relative group"><a id="quicktour" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#quicktour"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> | |
| <span>Quicktour | |
| </span></h1> | |
| <p>Simulate’s API is inspired by the great <a href="https://github.com/google-research/kubric" rel="nofollow">Kubric API</a>. | |
| The user can create a scene and add assets to it (objects, cameras, lights if needed). | |
| Once the scene is created you can save/share it and also render or do simulations using one of the backend rendering/simulation engines (at the moment Unity, Blender and Godot). The saving/sharing format is engine-agnostic and uses the standard glTF format for saving scenes.</p> | |
| <p>Let’s do a quick exploration together.</p> | |
| <p>To install and contribute (from <a href="CONTRIBUTING.md">CONTRIBUTING.md</a>)</p> | |
| <p>Create a virtual env and then install the code style/quality tools as well as the code base locally</p> | |
| <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> | |
| <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> | |
| Copied</div></button></div> | |
| <pre><!-- HTML_TAG_START -->pip install <span class="hljs-comment">--upgrade simulate</span><!-- HTML_TAG_END --></pre></div> | |
| <p>Before you merge a PR, fix the style (we use <code>isort</code> + <code>black</code>)</p> | |
| <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> | |
| <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> | |
| Copied</div></button></div> | |
| <pre><!-- HTML_TAG_START --><span class="hljs-attribute">make style</span><!-- HTML_TAG_END --></pre></div> | |
| <h2 class="relative group"><a id="project-structure" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#project-structure"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> | |
| <span>Project Structure | |
| </span></h2> | |
| <p>The Python API is located in src/simulate. It allows creation and loading of scenes, and sending commands to the backend.</p> | |
| <p>The backend options (Unity, Godot, Blender) can be found in the integrations folder. | |
| The most fully-featured backend is Unity, located in <a href="integrations/Unity">integrations/Unity</a>. | |
| The Unity editor isn’t required to run 🤗 Simulate, unless making changes to the backend, which requires Unity 2021.3.2f1.</p> | |
| <h2 class="relative group"><a id="loading-a-scene-from-the-hub-or-a-local-file" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#loading-a-scene-from-the-hub-or-a-local-file"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> | |
| <span>Loading a scene from the hub or a local file | |
| </span></h2> | |
| <p>Loading a scene from a local file or the hub is done with <code>Scene.create_from()</code>, saving or pushing to the hub with <code>scene.save()</code> or <code>scene.push_to_hub()</code>:</p> | |
| <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> | |
| <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> | |
| Copied</div></button></div> | |
| <pre><!-- HTML_TAG_START -->from simulate import Scene | |
| scene = <span class="hljs-module-access"><span class="hljs-module"><span class="hljs-identifier">Scene</span>.</span></span>create<span class="hljs-constructor">_from('<span class="hljs-params">tests</span><span class="hljs-operator">/</span><span class="hljs-params">test_assets</span><span class="hljs-operator">/</span><span class="hljs-params">fixtures</span><span class="hljs-operator">/</span>Box.<span class="hljs-params">gltf</span>')</span> # either local (priority) <span class="hljs-keyword">or</span> on the hub <span class="hljs-keyword">with</span> full path <span class="hljs-keyword">to</span> file | |
| scene = <span class="hljs-module-access"><span class="hljs-module"><span class="hljs-identifier">Scene</span>.</span></span>create<span class="hljs-constructor">_from('<span class="hljs-params">simulate</span>-<span class="hljs-params">tests</span><span class="hljs-operator">/</span>Box<span class="hljs-operator">/</span><span class="hljs-params">glTF</span><span class="hljs-operator">/</span>Box.<span class="hljs-params">gltf</span>', <span class="hljs-params">is_local</span>=False)</span> # Set priority <span class="hljs-keyword">to</span> the hub file | |
| scene.save('local_dir/file.gltf') # Save <span class="hljs-keyword">to</span> a local file | |
| scene.push<span class="hljs-constructor">_to_hub('<span class="hljs-params">simulate</span>-<span class="hljs-params">tests</span><span class="hljs-operator">/</span>Debug<span class="hljs-operator">/</span><span class="hljs-params">glTF</span><span class="hljs-operator">/</span>Box.<span class="hljs-params">gltf</span>')</span> # Save <span class="hljs-keyword">to</span> the hub | |
| scene.show<span class="hljs-literal">()</span><!-- HTML_TAG_END --></pre></div> | |
| <p align="center"><br> | |
| <img src="https://user-images.githubusercontent.com/10695622/191554717-acba4764-a4f4-4609-834a-39ddb50b844a.png" width="400"> | |
| <br></p> | |
| <h2 class="relative group"><a id="creating-a-scene-and-addingmanaging-objects-in-the-scene" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#creating-a-scene-and-addingmanaging-objects-in-the-scene"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> | |
| <span>Creating a Scene and adding/managing Objects in the scene | |
| </span></h2> | |
| <p>Basic example of creating a scene with a plane and a sphere above it:</p> | |
| <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> | |
| <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> | |
| Copied</div></button></div> | |
| <pre><!-- HTML_TAG_START -->import simulate as sm | |
| <span class="hljs-built_in">scene</span> = sm.Scene() | |
| <span class="hljs-built_in">scene</span> += sm.Plane() + sm.Sphere(<span class="hljs-built_in">position</span>=[<span class="hljs-number">0</span>, <span class="hljs-number">1</span>, <span class="hljs-number">0</span>], <span class="hljs-built_in">radius</span>=<span class="hljs-number">0.2</span>) | |
| >>> <span class="hljs-built_in">scene</span> | |
| >>> Scene(dimensionality=<span class="hljs-number">3</span>, engine='PyVistaEngine') | |
| >>> └── plane_01 (Plane - Mesh: <span class="hljs-number">121</span> <span class="hljs-built_in">points</span>, <span class="hljs-number">100</span> cells) | |
| >>> └── sphere_02 (Sphere - Mesh: <span class="hljs-number">842</span> <span class="hljs-built_in">points</span>, <span class="hljs-number">870</span> cells) | |
| <span class="hljs-built_in">scene</span>.<span class="hljs-built_in">show</span>()<!-- HTML_TAG_END --></pre></div> | |
| <p>An object (as well as the Scene) is just a node in a tree provided with optional mesh (as <code>pyvista.PolyData</code> structure) and material and/or light, camera, agents special objects.</p> | |
| <p>The following objects creation helpers are currently provided:</p> | |
| <ul><li><code>Object3D</code> any object with a <code>pyvista.PolyData</code> mesh and/or material</li> | |
| <li><code>Plane</code></li> | |
| <li><code>Sphere</code></li> | |
| <li><code>Capsule</code></li> | |
| <li><code>Cylinder</code></li> | |
| <li><code>Box</code></li> | |
| <li><code>Cone</code></li> | |
| <li><code>Line</code></li> | |
| <li><code>MultipleLines</code></li> | |
| <li><code>Tube</code></li> | |
| <li><code>Polygon</code></li> | |
| <li><code>Ring</code></li> | |
| <li><code>Text3D</code></li> | |
| <li><code>Triangle</code></li> | |
| <li><code>Rectangle</code></li> | |
| <li><code>Circle</code></li> | |
| <li><code>StructuredGrid</code></li></ul> | |
| <p>Most of these objects can be visualized by running the following <a href="https://github.com/huggingface/simulate/tree/main/examples/objects.py" rel="nofollow">example</a>:</p> | |
| <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> | |
| <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> | |
| Copied</div></button></div> | |
| <pre><!-- HTML_TAG_START -->python examples<span class="hljs-regexp">/basic/</span>objects.py<!-- HTML_TAG_END --></pre></div> | |
| <p align="center"><br> | |
| <img src="https://user-images.githubusercontent.com/10695622/191562825-49d4c692-a1ed-44e9-bdb9-da5f0bfb9828.png" width="400"> | |
| <br></p> | |
| <h3 class="relative group"><a id="objects-are-organized-in-a-tree-structure" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#objects-are-organized-in-a-tree-structure"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> | |
| <span>Objects are organized in a tree structure | |
| </span></h3> | |
| <p>Adding/removing objects:</p> | |
| <ul><li>Using the addition (<code>+</code>) operator (or alternatively the method <code>.add(object)</code>) will add an object as a child of a previous object.</li> | |
| <li>Objects can be removed with the subtraction (<code>-</code>) operator or the <code>.remove(object)</code> command.</li> | |
| <li>The whole scene can be cleared with <code>.clear()</code>.</li></ul> | |
| <p>Accessing objects:</p> | |
| <ul><li>Objects can be directly accessed as attributes of their parents using their names (given with <code>name</code> attribute at creation or automatically generated from the class name + creation counter).</li> | |
| <li>Objects can also be accessed from their names with <code>.get(name)</code> or by navigating in the tree using the various <code>tree_*</code> attributes available on any node.</li></ul> | |
| <p>Here are a couple of examples of manipulations:</p> | |
| <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> | |
| <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> | |
| Copied</div></button></div> | |
| <pre><!-- HTML_TAG_START --><span class="hljs-comment"># Add two copy of the sphere to the scene as children of the root node (using list will add all objects on the same level)</span> | |
| <span class="hljs-comment"># Using `.copy()` will create a copy of an object (the copy doesn't have any parent or children)</span> | |
| scene += [scene.plane_01.sphere_02.copy(), scene.plane_01.sphere_02.copy()] | |
| >>> scene | |
| >>> Scene(dimensionality=3, engine='pyvista') | |
| >>> ├── plane_01 (Plane - Mesh:<span class="hljs-number"> 121 </span>points,<span class="hljs-number"> 100 </span>cells) | |
| >>> │ └── sphere_02 (Sphere - Mesh:<span class="hljs-number"> 842 </span>points,<span class="hljs-number"> 870 </span>cells) | |
| >>> ├── sphere_03 (Sphere - Mesh:<span class="hljs-number"> 842 </span>points,<span class="hljs-number"> 870 </span>cells) | |
| >>> └── sphere_04 (Sphere - Mesh:<span class="hljs-number"> 842 </span>points,<span class="hljs-number"> 870 </span>cells) | |
| <span class="hljs-comment"># Remove the last added sphere</span> | |
| >>> scene.remove(scene.sphere_04) | |
| >>> Scene(dimensionality=3, engine='pyvista') | |
| >>> ├── plane_01 (Plane - Mesh:<span class="hljs-number"> 121 </span>points,<span class="hljs-number"> 100 </span>cells) | |
| >>> │ └── sphere_02 (Sphere - Mesh:<span class="hljs-number"> 842 </span>points,<span class="hljs-number"> 870 </span>cells) | |
| >>> └── sphere_03 (Sphere - Mesh:<span class="hljs-number"> 842 </span>points,<span class="hljs-number"> 870 </span>cells)<!-- HTML_TAG_END --></pre></div> | |
| <h3 class="relative group"><a id="objects-can-be-translated-rotated-scaled" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#objects-can-be-translated-rotated-scaled"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> | |
| <span>Objects can be translated, rotated, scaled | |
| </span></h3> | |
| Here are a couple of examples: | |
| <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> | |
| <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> | |
| Copied</div></button></div> | |
| <pre><!-- HTML_TAG_START --># Let's <span class="hljs-built_in">translate</span> our <span class="hljs-built_in">floor</span> (with the <span class="hljs-built_in">first</span> <span class="hljs-built_in">sphere</span>, its child) | |
| <span class="hljs-built_in">scene</span>.plane_01.translate_x(<span class="hljs-number">1</span>) | |
| # Let's <span class="hljs-built_in">scale</span> the <span class="hljs-built_in">second</span> <span class="hljs-built_in">sphere</span> uniformly | |
| <span class="hljs-built_in">scene</span>.sphere_03.<span class="hljs-built_in">scale</span>(<span class="hljs-number">0.1</span>) | |
| # Inspect the current <span class="hljs-built_in">position</span> <span class="hljs-keyword">and</span> scaling <span class="hljs-built_in">values</span> | |
| <span class="hljs-built_in">print</span>(<span class="hljs-built_in">scene</span>.plane_01.<span class="hljs-built_in">position</span>) | |
| >>> <span class="hljs-built_in">array</span>([<span class="hljs-number">1</span>., <span class="hljs-number">0</span>., <span class="hljs-number">0</span>.]) | |
| <span class="hljs-built_in">print</span>(<span class="hljs-built_in">scene</span>.sphere_03.scaling) | |
| >>> <span class="hljs-built_in">array</span>([<span class="hljs-number">0.1</span>, <span class="hljs-number">0.1</span>, <span class="hljs-number">0.1</span>]) | |
| # We can also <span class="hljs-built_in">translate</span> from a <span class="hljs-built_in">vector</span> <span class="hljs-keyword">and</span> rotate from a quaternion <span class="hljs-keyword">or</span> along the various <span class="hljs-built_in">axes</span><!-- HTML_TAG_END --></pre></div> | |
| <h3 class="relative group"><a id="visualization-engine" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#visualization-engine"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> | |
| <span>Visualization engine | |
| </span></h3> | |
| <p>A default vizualization engine is provided with the vtk backend of <code>pyvista</code>.</p> | |
| <p>Starting the vizualization engine can be done simply with <code>.show()</code>.</p> | |
| <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> | |
| <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> | |
| Copied</div></button></div> | |
| <pre><!-- HTML_TAG_START --><span class="hljs-built_in">scene</span>.<span class="hljs-built_in">show</span>()<!-- HTML_TAG_END --></pre></div> | |
| <p>You can find bridges to other rendering/simulation engines in the <code>integrations</code> directory.</p> | |
| <h1 class="relative group"><a id="reinforcement-learning-rl-with-simulate" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#reinforcement-learning-rl-with-simulate"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> | |
| <span>Reinforcement Learning (RL) with 🤗 Simulate | |
| </span></h1> | |
| <p>🤗 Simulate is designed to provide easy and scalable integration with reinforcement learning algorithms. | |
| The core abstraction is through the <a href="/docs/simulate/main/en/api/rl_env#simulate.RLEnv">RLEnv</a> class that wraps a <code>Scene</code>. | |
| The <a href="/docs/simulate/main/en/api/rl_env#simulate.RLEnv">RLEnv</a> allows an <a href="/docs/simulate/main/en/api/actuators#simulate.Actuator">Actuator</a> to be manipulated by an external agent or policy.</p> | |
| <p>It is core to the design of 🤗 Simulate that we are <em>not creating</em> Agents, but rather providing an interface for applications of machine learning and embodied AI. | |
| The core API for RL applications can be seen below, where 🤗 Simulate constrains the information that flows from the Scene to the external agent through an Actuator abstraction.</p> | |
| <p align="center"><br> | |
| <img src="https://user-images.githubusercontent.com/10695622/192663853-a7543091-8d45-4fba-b8dc-2b632d66a35f.png" width="500"> | |
| <br></p> | |
| <p>At release, we include a set of pre-designed <code>Actor</code>s that can act or navigate a scene. An <code>Actor</code> inherits from an <code>Object3D</code> and has sensors, actuators, and action mappings.</p> | |
| <h3 class="relative group"><a id="tips" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#tips"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> | |
| <span>Tips | |
| </span></h3> | |
| <p>If you are running on GCP, remember to not install <code>pyvistaqt</code>, and if you did so, uninstall it in your environment, since QT doesn’t work well on GCP.</p> | |
| <script type="module" data-hydrate="1mlgx75"> | |
| import { start } from "/docs/simulate/main/en/_app/start-hf-doc-builder.js"; | |
| start({ | |
| target: document.querySelector('[data-hydrate="1mlgx75"]').parentNode, | |
| paths: {"base":"/docs/simulate/main/en","assets":"/docs/simulate/main/en"}, | |
| session: {}, | |
| route: false, | |
| spa: false, | |
| trailing_slash: "never", | |
| hydrate: { | |
| status: 200, | |
| error: null, | |
| nodes: [ | |
| import("/docs/simulate/main/en/_app/pages/__layout.svelte-hf-doc-builder.js"), | |
| import("/docs/simulate/main/en/_app/pages/quicktour.mdx-hf-doc-builder.js") | |
| ], | |
| params: {} | |
| } | |
| }); | |
| </script> | |
Xet Storage Details
- Size:
- 33.3 kB
- Xet hash:
- 4a302d1b453c570560d0127b31fae1cd0a3273a0dbd50383b669a69edeaf9eff
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.