<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Viam Documentation – Workshop</title><link>https://docs.viam.com/tags/workshop/</link><description>Recent content in Workshop on Viam Documentation</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="https://docs.viam.com/tags/workshop/feed.xml" rel="self" type="application/rss+xml"/><item><title>Tutorials: Vision-Guided Pick-and-Place with the xArm6</title><link>https://docs.viam.com/tutorials/pick-and-place/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.viam.com/tutorials/pick-and-place/</guid><description>
&lt;p&gt;The workshop is structured as six sequential phases, each ending with checkpoints you can verify before moving on. The workshop has two milestones: by the end of Phase 4 you drive the robot from your own code through a static, pre-planned sequence (milestone one), and by the end of Phase 5 you close the loop with live perception so the robot detects, picks, and places blocks on its own (milestone two).&lt;/p&gt;
&lt;h2 id="what-youll-build" class="main-content-heading"&gt;
What you&amp;rsquo;ll build
&lt;div class="copied" id="copied-what-youll-build" aria-hidden="true"&gt;
&lt;div class="copied-notification" id="copied-what-youll-build-text"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/h2&gt;&lt;!-- ASSET P0 hero-hardware-overview (PHOTO): complete rig staged (xArm6 + gripper + wrist RealSense + blocks + bin + Meerkat). See plans/2026-07-02-pick-and-place-shot-list.md --&gt;
&lt;picture&gt;
&lt;source srcset="https://docs.viam.com/tutorials/pick-and-place/hero-hardware-overview_hu_872431867dec6b92.webp" type="image/webp" width="1200" height="1600"&gt;
&lt;img src="https://docs.viam.com/tutorials/pick-and-place/hero-hardware-overview.jpeg" width="1200" height="1600" alt="The staged pick-and-place workstation: a uFactory xArm6 arm with a two-finger gripper and a wrist-mounted RealSense camera, colored blocks, and a bin." class="" id="" style="" loading="lazy"&gt;
&lt;/picture&gt;
&lt;p&gt;You will configure an xArm6 robotic arm fitted with a two-finger gripper and a wrist-mounted Intel RealSense depth camera. A shape-detection vision service finds blocks, and the motion service plans collision-free picks that place each block in the bin. By the end, you will have a Python script you run from your laptop and a deployable module that drives the full detect-pick-place loop.&lt;/p&gt;
&lt;h2 id="required-hardware" class="main-content-heading"&gt;
Required hardware
&lt;div class="copied" id="copied-required-hardware" aria-hidden="true"&gt;
&lt;div class="copied-notification" id="copied-required-hardware-text"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;uFactory xArm6&lt;/strong&gt;: the six-axis robotic arm that picks and places the blocks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Intel RealSense D435&lt;/strong&gt;: the wrist-mounted depth camera that detects block positions by shape.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;uFactory finger gripper&lt;/strong&gt;: the end-effector that grasps the blocks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;System76 Meerkat&lt;/strong&gt;: the on-robot mini-PC that runs the Viam machine server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="phases" class="main-content-heading"&gt;
Phases
&lt;div class="copied" id="copied-phases" aria-hidden="true"&gt;
&lt;div class="copied-notification" id="copied-phases-text"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/h2&gt;&lt;p&gt;Phases 1 through 5 are the core workshop. Phase 6 is optional.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://docs.viam.com/tutorials/pick-and-place/platform-mental-model/" &gt;Platform mental model&lt;/a&gt;&lt;/strong&gt; (~20 min)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://docs.viam.com/tutorials/pick-and-place/configure-resources/" &gt;Configure resources and explore the app&lt;/a&gt;&lt;/strong&gt; (~15 min)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://docs.viam.com/tutorials/pick-and-place/static-positions/" &gt;Static positions and obstacles&lt;/a&gt;&lt;/strong&gt; (~20 min)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://docs.viam.com/tutorials/pick-and-place/control-the-robot-from-python/" &gt;Control the robot from Python&lt;/a&gt;&lt;/strong&gt; (~15 min, milestone one)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://docs.viam.com/tutorials/pick-and-place/perception-guided-picking/" &gt;Perception-guided picking&lt;/a&gt;&lt;/strong&gt; (~22 min, milestone two)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://docs.viam.com/tutorials/pick-and-place/inline-module/" &gt;Inline module&lt;/a&gt;&lt;/strong&gt; (~20 min, optional)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When you finish, the &lt;strong&gt;&lt;a href="https://docs.viam.com/tutorials/pick-and-place/wrap-up/" &gt;wrap-up&lt;/a&gt;&lt;/strong&gt; reviews what you built and points to next steps.&lt;/p&gt;
&lt;h2 id="companion-code" class="main-content-heading"&gt;
Companion code
&lt;div class="copied" id="copied-companion-code" aria-hidden="true"&gt;
&lt;div class="copied-notification" id="copied-companion-code-text"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/h2&gt;&lt;p&gt;All supporting files for this workshop live in the &lt;a href="https://github.com/viam-devrel/pick-and-place" target="_blank" &gt;viam-devrel/pick-and-place&lt;/a&gt; repository. You do not need it to start, but the prerequisites below reference its &lt;code&gt;scripts/&lt;/code&gt; project, and later phases pull from it.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;config/&lt;/code&gt; holds a machine config fragment and an obstacles template. Use them to check your work after you configure resources by hand.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scripts/&lt;/code&gt; holds the starter script for Phase 4 and the reference solution for Phase 5.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="prerequisites" class="main-content-heading"&gt;
Prerequisites
&lt;div class="copied" id="copied-prerequisites" aria-hidden="true"&gt;
&lt;div class="copied-notification" id="copied-prerequisites-text"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/h2&gt;&lt;p&gt;This is a self-serve workshop, so confirm each of the following before you start:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Python 3.10 or newer.&lt;/strong&gt; Install it with &lt;a href="https://docs.astral.sh/uv/getting-started/installation/" target="_blank" &gt;uv&lt;/a&gt; (recommended) or from &lt;a href="https://www.python.org/downloads/" target="_blank" &gt;python.org&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Viam Python SDK.&lt;/strong&gt; The companion &lt;code&gt;scripts/&lt;/code&gt; project already declares &lt;code&gt;viam-sdk&lt;/code&gt;, so &lt;code&gt;uv run&lt;/code&gt; installs it for you in Phase 4. See the &lt;a href="https://python.viam.dev/" target="_blank" &gt;Python SDK docs&lt;/a&gt; for reference. Pip works too if you prefer it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A working terminal&lt;/strong&gt; on the machine you will run the Phase 4 and Phase 5 scripts from, typically your personal computer rather than the robot&amp;rsquo;s Meerkat.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A Viam account with an online machine.&lt;/strong&gt; Log in at &lt;a href="https://app.viam.com" target="_blank" &gt;app.viam.com&lt;/a&gt;, &lt;a href="https://docs.viam.com/set-up-a-machine/first-machine/" target="_blank" &gt;create a machine&lt;/a&gt;, and confirm the green &lt;strong&gt;Live&lt;/strong&gt; indicator before you begin. &amp;ldquo;Online&amp;rdquo; means &lt;code&gt;viam-server&lt;/code&gt; is running on the machine and reachable from the Viam app, so the app can deliver config and you can reach it from your own computer; the green &lt;strong&gt;Live&lt;/strong&gt; indicator is how you confirm that connection.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="validate-your-environment" class="main-content-heading"&gt;
Validate your environment
&lt;div class="copied" id="copied-validate-your-environment" aria-hidden="true"&gt;
&lt;div class="copied-notification" id="copied-validate-your-environment-text"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/h3&gt;&lt;!-- ASSET P1 env-validate (TERM): python3 --version and uv run --with viam-sdk import viam printing a version --&gt;
&lt;p&gt;Before starting Phase 4, confirm your environment is ready:&lt;/p&gt;
&lt;pre class="language-sh "data-line-offset="0"&gt;
&lt;code&gt;python3 --version # 3.10 or newer
uv run --with viam-sdk python -c &amp;#34;import viam; print(viam.__version__)&amp;#34; # prints a version&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;If either command fails, revisit the checklist above before continuing.&lt;/p&gt;
&lt;h3 id="where-to-start" class="main-content-heading"&gt;
Where to start
&lt;div class="copied" id="copied-where-to-start" aria-hidden="true"&gt;
&lt;div class="copied-notification" id="copied-where-to-start-text"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/h3&gt;&lt;!-- ASSET P1 live-indicator (UI+): machine page with the green Live indicator boxed --&gt;
&lt;picture&gt;
&lt;source srcset="https://docs.viam.com/tutorials/pick-and-place/live-indicator_hu_347df98866acaa0b.webp" type="image/webp" width="1200" height="707"&gt;
&lt;img src="https://docs.viam.com/tutorials/pick-and-place/live-indicator.png" width="1200" height="707" alt="A Viam machine page showing the green Live indicator." class="" id="" style="" loading="lazy"&gt;
&lt;/picture&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hardware ready (&lt;code&gt;viam-server&lt;/code&gt; running):&lt;/strong&gt; start at &lt;a href="https://docs.viam.com/tutorials/pick-and-place/platform-mental-model/" &gt;Phase 1&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Provisioning your own hardware:&lt;/strong&gt; complete &lt;a href="https://docs.viam.com/set-up-a-machine/first-machine/" target="_blank" &gt;the hardware setup&lt;/a&gt;, then return here for &lt;a href="https://docs.viam.com/tutorials/pick-and-place/platform-mental-model/" &gt;Phase 1&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>