Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dad 283 tutorial viam on vm #590

Closed
wants to merge 4 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/tutorials/img/viam-on-vm/vm-bot-created.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/tutorials/img/viam-on-vm/vm-config.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
242 changes: 242 additions & 0 deletions docs/tutorials/viam-on-a-virtual-machine.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,242 @@
---
title: "How to setup Viam-Server on a Linux virtual machine hosted on Windows"
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
title: "How to setup Viam-Server on a Linux virtual machine hosted on Windows"
title: "Use viam-server on a Linux virtual machine hosted on Windows"

^this tutorial goes further than just setup

linkTitle: "Viam-server on a Linux VM on Windows"
Copy link
Collaborator

Choose a reason for hiding this comment

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

Good - but I think we shouldn't capitalize viam-server but use it as is since it's the name of the bianry

weight: 120
type: "docs"
description: "This tutorial provides instructions to install and configure the viam-server on virtual machine hosted on Windows."
tags: ["mock", "simulation", "virtual machine", "Windows"]
---

**Objective**: Setup and configure viam-server and a mock robot in a linux virtual machine (VM) hosted on Windows.
Copy link
Contributor

Choose a reason for hiding this comment

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

Do we normally have an "Objective"? This, the title, and description are all similar and thus repetitive

Copy link
Collaborator

Choose a reason for hiding this comment

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

+1 let's change the description to:

This tutorial provides instructions to install and configure viam-server on a virtual machine hosted on Windows and to use it with a mock robot.


## What you’ll need for this tutorial
Copy link
Contributor

Choose a reason for hiding this comment

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

I think this should probably be part of "requirements" after the intro


* A laptop or desktop running Windows 10 or 11.
Copy link
Collaborator

Choose a reason for hiding this comment

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

I think this can be omitted since it is in the title, so the premise is clear.

However: is this actually a requirement? If I ran a vm elsewhere would it not work?

* *Python 3.9+.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
* *Python 3.9+.
* Python 3.9+.

Do we actually need 3.9+? Anything in this that requires functionality that 3.0 doesn't have?

* A code editor of your choice.
Copy link
Collaborator

Choose a reason for hiding this comment

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

We can omit that too. It's obvious and any machine has it.


## Introduction
Copy link
Collaborator

Choose a reason for hiding this comment

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

With the above moving into the requirements section and the objective moving into the description, you can remove this heading and it will be understood it's the introduction


Since Viam-server only operates in linux and macOS environments, a virtual machine running a supported OS is the only way for Windows users to natively operate Viam from a Windows PC.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
Since Viam-server only operates in linux and macOS environments, a virtual machine running a supported OS is the only way for Windows users to natively operate Viam from a Windows PC.
`viam-server` is only supported on Linux and MacOS environment. To operate Viam on a Windows machine, you can install a supported Operating System (OS) using a Virtual Machine (VM).

^ if you are using a VM you do not natively operate Viam from a Windows PC. The above suggestion is clearer


Using a linux virtual machine provides Windows users with a means to use Viam to configure and operate robots.
Copy link
Contributor

Choose a reason for hiding this comment

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

I think we need a better explanation of why someone would do this, as:

  1. They can configure robots through the viam app
  2. They can operate robots from the app and via an SDK running anywhere (including windows)

However, other than a mock robot can someone run an actual robot based on the windows/VM compute? We need to be clear.

Copy link
Collaborator

Choose a reason for hiding this comment

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

And those should probably be things we call out as alternative options before letting them continue to ensure they know they have options. If there are links to relevant docs, we can additionally link to those.


This tutorial will demonstrate the steps to install and configure Virtual Box, its extension pack, and an Ubuntu virtual machine to operate with Viam.
Copy link
Collaborator

Choose a reason for hiding this comment

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

You can leave out this sentence, there are already many "This tutorial ..." sentences that set the scene. The headlines can do the talking here


### Requirements

#### Windows software

* VirtualBox
* VirtualBox Extension Pack
* SSH Terminal software (e.g., Putty, TeraTerm, etc.)

{{% alert title="Note" color="note"%}}
VMare may be a viable option for hosting VMs for use with Viam.
Copy link
Contributor

Choose a reason for hiding this comment

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

typo: VMware

Also, we might want to say "VMware or other virtualization technologies may be a viable...

Copy link
Collaborator

Choose a reason for hiding this comment

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

This is not a very helpful note. Do we anticipate VMware or other virtualization software wouldn't work? If so just leave out the note. If not just say "You can also use other visualization software".

However, VMware has not been tested (15 Dec 2022).
{{% /alert %}}

## Setup the Windows PC

### Install VirtualBox and the VirtualBox Extension Pack

Download and install VirtualBox and the VirtualBox Extension Pack from <a href="https://www.virtualbox.org/wiki/Downloads" target="_blank">Virtual Box</a>[^vbox].
Copy link
Collaborator

Choose a reason for hiding this comment

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

why are you using footer links if they don't work?

Suggested change
Download and install VirtualBox and the VirtualBox Extension Pack from <a href="https://www.virtualbox.org/wiki/Downloads" target="_blank">Virtual Box</a>[^vbox].
Download and install [VirtualBox and the VirtualBox Extension Pack](https://www.virtualbox.org/wiki/Downloads).


^[vbox]:VirtualBox and the VirtualBox Extension Pack download page: <a href="https://www.virtualbox.org/wiki/Downloads" target="_blank">https://www.virtualbox.org/wiki/Downloads</a>
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
^[vbox]:VirtualBox and the VirtualBox Extension Pack download page: <a href="https://www.virtualbox.org/wiki/Downloads" target="_blank">https://www.virtualbox.org/wiki/Downloads</a>


### Download and install the VM image

Download the Ubuntu image: Ubuntu 22.04 LTS, "Jammy Jellyfish," from <a href="https://www.linuxvmimages.com/images/ubuntu-2204/ ">
LinuxVMImages.com</a>[^ubuimage]

[^ubimage]:Ubuntu 22.04 LTS, "Jammy Jellyfish," virtual image from Linuxvmimages: <<a href="https://www.linuxvmimages.com/images/ubuntu-2204/">ht<span></span>tps://www.linuxvmimages.com/images/ubuntu-2204/</a>
Copy link
Contributor

Choose a reason for hiding this comment

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

Are we sure this is a safe/trusted source for the VM image? I think its safer for us to instruct them to get the official Ubuntu ISO as per:
https://linuxhint.com/install-ubuntu22-04-virtual-box/

Comment on lines +49 to +52
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
Download the Ubuntu image: Ubuntu 22.04 LTS, "Jammy Jellyfish," from <a href="https://www.linuxvmimages.com/images/ubuntu-2204/ ">
LinuxVMImages.com</a>[^ubuimage]
[^ubimage]:Ubuntu 22.04 LTS, "Jammy Jellyfish," virtual image from Linuxvmimages: <<a href="https://www.linuxvmimages.com/images/ubuntu-2204/">ht<span></span>tps://www.linuxvmimages.com/images/ubuntu-2204/</a>
Download the latest [Ubuntu image](https://cdimage.ubuntu.com/daily-live/current//)

Unless we have reason to believe that viam-server won't work on future releases (in which case we'd be in serious trouble), let's point people at the latest version


Once the download (Ubuntu_22.04_VB.7z) is complete, use 7-zip to extract the image file.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
Once the download (Ubuntu_22.04_VB.7z) is complete, use 7-zip to extract the image file.
Once the download (Ubuntu_22.04_VB.7z) is complete, extract the image file.

They may not have 7-zip but I think nowadays unzipping should be natively supported

Next, double-click the image file (<file>Ubuntu_22.04_VB_LinuxVMImages.COM.vbox</file>) to add the image to VirtualBox.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
Next, double-click the image file (<file>Ubuntu_22.04_VB_LinuxVMImages.COM.vbox</file>) to add the image to VirtualBox.
Next, double-click the image file (<file>Ubuntu_XX.XX_VB_LinuxVMImages.COM.vbox</file>) to add the image to VirtualBox.


#### Virtual machine image configuration
Copy link
Collaborator

Choose a reason for hiding this comment

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

Prefer imperative

Suggested change
#### Virtual machine image configuration
#### Configure the virtual machine image


On the Oracle Virtual Machine Manager, configure the following settings for the VM image.
Copy link
Collaborator

Choose a reason for hiding this comment

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

The top of the window in the screenshot says Oracle VM VirtualBox Manager.

Merge this and the next sentence (...), select the Ubuntu image and configure the following settings:

Ensure that you've selected the Ubuntu image (or the image you chose to use) before continuing:

{{< figure src="../img/viam-on-vm/vm-config.png" width="400px" alt="Oracle VM VirtualBox Manager with the Ubuntu image selected." title="Oracle VM VirtualBox Manager." >}}

{{% alert title="Note" color="note"%}}
The virtual machine must be powered off to change its configuration.
{{% /alert %}}

1. Navigate to: Settings > General > Advanced, then set **Shared Clipboard** and **Drag'n'Drop** to "Bidirectional" for ease of use.

1. Navigate to: Settings > System > Motherboard.
In this tutorial, we operated the VM with 4GB of the available memory.
Allocate at least 4GB to the VM.

1. Navigate to: Settings > USB, select (check) **Enable USB Controller**, and then select a USB controller.
Copy link
Collaborator

Choose a reason for hiding this comment

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

which is there a (check)?

The Laptop in this tutorial uses the laptop's USB 3.0 xHCI Controller.
Copy link
Collaborator

Choose a reason for hiding this comment

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

I think that's irrelevant to everyone reading this

Choose the most current USB revision for your image.
Copy link
Collaborator

Choose a reason for hiding this comment

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

that's more helpful


Verify that the image launches by clicking **Start** on the WM VirtualBox Manager's toolbar with the Ubuntu image selected:

#### Packages in VM images
Copy link
Collaborator

Choose a reason for hiding this comment

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

I think we don't need to explain what VMs generally contain in terms of packages. Merge this and the next section under the headingInstall the following additional packages and then explain how to login and then give the list for the packages


Virtual machines contain the most common packages for their OS as determined by the VM image creator.
Therefore, a VM image obtained from _any_ source might not contain all of the packages required by Viam.

#### Required packages not in the image

Login to the Ubuntu VM using the provided credentials to complete the steps in this section.

* Ubuntu_22.04_VB_LinuxVMImages VM Credentials
* username: ubuntu
* password: ubuntu
* Root account password: ubuntu

{{< alert title="Note" color="note" >}}
Perform an <file>apt update</file> to update the package list and an <file>apt upgrade</file> to update all packages to the latest revision before checking that the VM is current.
Copy link
Collaborator

Choose a reason for hiding this comment

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

what does before checking that the VM is current mean? I think that can be safely removed

{{< /alert >}}

The VM image for this tutorial does not contain three packages required by Viam.
Copy link
Collaborator

Choose a reason for hiding this comment

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

you can remove this - it'll be clear from the changed heading

Add these packages to the VM:

* curl - The installation procedure requires curl.<br>
<file>sudo apt install curl</file>
Copy link
Collaborator

Choose a reason for hiding this comment

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

this is a command, please wrap it in the markdown for code:

Suggested change
<file>sudo apt install curl</file>
```sh
sudo apt install curl</file

Copy link
Collaborator

Choose a reason for hiding this comment

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

same for the other commands


* libfuse2 - Viam-server requires libfuse2.
If your VM image uses FUSE3, libfuse2 is most likely _not_ installed and you must install libfuse2.<br>
Copy link
Collaborator

Choose a reason for hiding this comment

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

You can remove that second sentence. Just say it's required. You don't have to convince them it's likely not installed

<file>sudo apt-get install libfuse2</file>

* pip - The installation procedure requires pip.<br>
Copy link
Contributor

Choose a reason for hiding this comment

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

Only for the SDK, correct?

<file>sudo apt install python3-pip</file>

{{% alert title="Info" color="tip" %}}
The missing packages were identified through trial and error during installation.
If you decide to use a different virtual machine or image, and the installation script fails, determine whether the errors are the result of a missing package or library and if so, retry the script after installing them.
Comment on lines +112 to +113
Copy link
Collaborator

Choose a reason for hiding this comment

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

How this list was identified isn't interesting to the user. But telling the user to identify potential other missing packages is helpful, so how about we change this to:

Suggested change
The missing packages were identified through trial and error during installation.
If you decide to use a different virtual machine or image, and the installation script fails, determine whether the errors are the result of a missing package or library and if so, retry the script after installing them.
If you decide to use a different virtual machine or image and the installation script fails, determine whether the errors are the result of a missing package or library and if so, retry the script after installing them.

{{% /alert %}}

## Setup in the Viam app
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
## Setup in the Viam app
## Configure the Viam app


### Setup an account on the Viam app
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
### Setup an account on the Viam app
### Create an account on the Viam app

^ Let's not overuse setup


If you do not already have an account on the Viam app, go to app.viam.com and sign up.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
If you do not already have an account on the Viam app, go to app.viam.com and sign up.
If you do not already have an account on the Viam app, go to app.viam.com and create an account.

Please refer to [Getting Started with the Viam App](https://docs.viam.com/getting-started/app-usage/) for complete details.

You will need to create an Organization, a Location, and then add a robot.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
You will need to create an Organization, a Location, and then add a robot.
Then create an Organization, a Location, and a robot.


### Install the viam-server and Viam app config
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
### Install the viam-server and Viam app config
### Install viam-server and configure the Viam app


For this section, you will perform steps listed on the [Robots](https://app.viam.com/robots) page in the VM's terminal window.
Copy link
Collaborator

Choose a reason for hiding this comment

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

What are these steps? Can you give a one sentence overview that explains what the reader should expect?


Copy link
Collaborator

Choose a reason for hiding this comment

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

If you haven't logged in yet I don't think you would have been able to go to the robots page as linked above. Start by instructing the user to log in and go to the robots page.

Having logged in to your account, click the robot you created in the previous section to access its configuration and follow these steps to continue.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Is that what we did on the robots page? Created a robot? Did it need a specific name?


1. Click **SETUP**.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
1. Click **SETUP**.
1. Navigate to the **SETUP** tab.

^ in this case people might expect to see a button and fail to find it

1. Set **Mode** to "Linux."
1. Set **Architecture** to "X86_64."
1. Perform Step 1, "Download Viam app config to your computer."
Click **COPY** on Step 1, then paste into the terminal window and press **Enter**.
This step downloads the viam-server configuration file used by your robot to connect to app.viam.com.
1. Perform Step 2, "Download and install viam-server"
Click **COPY** on Step 2, then paste into the terminal window and press **Enter**.
This step downloads and installs the most recent stable viam-server AppImage package.
Comment on lines +134 to +139
Copy link
Collaborator

Choose a reason for hiding this comment

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

I think here we should just defer to the steps on the setup page rather than duplicating them - it will make this more evergreen in case the steps change.


If the configuration is correct, then the app displays a connection confirmation beneath Step 3 after a short wait, :
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
If the configuration is correct, then the app displays a connection confirmation beneath Step 3 after a short wait, :
Once you see a connection confirmation, the robot is configured and connected correctly:


{{< figure src="../img/viam-on-vm/successful-connection.png" width="400px" alt="Successful connection message." title="Successful connection message." >}}
Copy link
Collaborator

Choose a reason for hiding this comment

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

Does this figure need a title?


## Create a mock robot
Copy link
Collaborator

Choose a reason for hiding this comment

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

Why are we not just linking to the build a mock robot tutorial and leaving it at that? Is there something in particular that is different in this than in the other tutorial?

Will stop review here for now until that questio in answered


This section adds a fake motor and arm in the same manner as the [How to Build a Mock Robot](../tutorials/build-a-mock-robot/) tutorial.
Copy link
Collaborator

Choose a reason for hiding this comment

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

I think this may not resolve - you are already in the tutorial folder so I think it shouldn't be in the file location

When you add the fake motor and arm component to your robot, the Viam app automatically generates a UI for the motor and arm under the **CONTROL** tab.

{{< figure src="../img/viam-on-vm/vm-bot-created.png" width="800px" alt="The GUI interface for your mock robot displays configuration pane a pane for each fake component and a pane for the DoCommand and for Operations & Sessions." title="The GUI interface for your mock robot." >}}

Perform these steps on your robot's **CONFIG** tab in the Viam-app:

1. Navigate to the **CONFIG** tab.
1. Create a fake arm component
1. Navigate to the **Create a Component** pane at the bottom of the page.
1. Enter the desired name for the arm component.
1. Select "arm" from the **Type** drop-down.
1. Select "fake" from the **Model** drop-down.
1. Create a Fake Motor Component
1. Navigate to the **Create a Component** pane at the bottom of the page.
1. Enter the desired name for the motor component.
1. Select "motor" from the **Type** drop-down.
1. Select "fake" from the **Model** drop-down.
1. Click **Save Config**.

{{% alert title="Caution" color="caution" %}}
Do not share your robot secret or robot address publicly. Sharing this information compromises your system security by allowing unauthorized access to your computer.
{{% /alert %}}

### Control the mock robot arm
Copy link
Contributor

Choose a reason for hiding this comment

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

I might suggest that "Control" is a section at the same header level as "Create"


While connected to the robot, you can verify the operation of the fake arm from the **CONTROL** tab or through code, which would allow you to control and observe to positioning of the arm component in the terminal and in the GUI.

#### Using the GUI
Copy link
Contributor

Choose a reason for hiding this comment

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

What GUI? I know you mean the control tab as mentioned above, but this might be confusing to the reader as you introduce a subsection for this when you've already told them they can control it from the CONTROL tab.


In the GUI, you can click **Modify All** to change the X, Y, and Z positions for joints in the arm.

### Using the SDK

Alternatively, you can programmatically perform random changes and observe the returned positional value changes in the terminal, as well as on the **CONTROL** tab using either the Python SDK or the GO SDK.
Copy link
Contributor

Choose a reason for hiding this comment

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

perform random changes is really non-specific - explain what you mean clearly


The next section describes the process for Python.

#### Creating the arm control code

Paste the boilerplate code from the CODE SAMPLE tab of the Viam app into a file named <file>arm-move.py</file> or into your code editor.
<file>arm_move.py</file> imports the arm component from the Viam Python SDK and imports the random and async.io libraries.
The code from the CODE SAMPLE tab can only connect your robot to the viam app.

At the top of your <file>arm_move.py</file> file, paste the following lines:

``` python
from viam.components.arm import ArmClient, JointPositions
import random
import asyncio
```

Next, insert the following lines after: <code>from viam.rpc.dial import Credentials, DialOptions</code>:

```python
arm = ArmClient.from_robot(robot=robot, name='my_main_arm')

# Gets a random position for each servo on the arm that is within the safe range of motion of the arm. Returns a new array of safe joint positions.

def getRandoms():
return [random.randint(-90, 90),
random.randint(-120, -45),
random.randint(-45, 45),
random.randint(-45, 45),
random.randint(-45, 45)]

# Moves the arm into a new random position every second

async def randomMovement(arm: ArmClient):
while (True):
randomPositions = getRandoms()
newRandomArmJointPositions = JointPositions(values=randomPositions)
await arm.move_to_joint_positions(newRandomArmJointPositions)
print(await arm.get_joint_positions())
await asyncio.sleep(1)
return
```

Save the file.
These lines generate the random movements we will use to test the robot.

In the VM's terminal window, run the following command:

``` bash
python3 arm-move.py
```

{{< figure src="../img/viam-on-vm/observing-arm-changes.gif" width="800px" alt="The CONTROL tab and a terminal window displaying arm geometry changes generated by arm-move.py." title="The CONTROL tab and a terminal window displaying arm geometry changes generated by arm-move.py." >}}

## Next Steps

In this tutorial, you learned how to create a mock robot using fake components on a Linux virtual machine a Windows host.

If you're ready to get started with building robots with real hardware components, you should pick up a Raspberry Pi and try building one of Viam's introductory robots on the [tutorials page in our documentation](https://docs.viam.com/tutorials/).
Copy link
Contributor

Choose a reason for hiding this comment

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

Here I think you are getting to the intent of the tutorial - to allow people to try Viam locally without a pi or other supported compute. We need to make this clear up front


If you have any issues or if you want to connect with other developers learning how to build robots with Viam, be sure that you head over to the [Viam Community Slack](http://viamrobotics.slack.com).