-
Notifications
You must be signed in to change notification settings - Fork 45
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
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
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" | ||||||||||||
linkTitle: "Viam-server on a Linux VM on Windows" | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Good - but I think we shouldn't capitalize |
||||||||||||
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. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. +1 let's change the description to:
|
||||||||||||
|
||||||||||||
## What you’ll need for this tutorial | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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+. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Do we actually need 3.9+? Anything in this that requires functionality that 3.0 doesn't have? |
||||||||||||
* A code editor of your choice. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
^ 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. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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:
However, other than a mock robot can someone run an actual robot based on the windows/VM compute? We need to be clear. There was a problem hiding this comment. Choose a reason for hiding this commentThe 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. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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... There was a problem hiding this comment. Choose a reason for hiding this commentThe 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]. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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
|
||||||||||||
|
||||||||||||
^[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> | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
|
||||||||||||
### 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> | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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:
Comment on lines
+49
to
+52
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
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. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
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. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
|
||||||||||||
#### Virtual machine image configuration | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Prefer imperative
Suggested change
|
||||||||||||
|
||||||||||||
On the Oracle Virtual Machine Manager, configure the following settings for the VM image. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The top of the window in the screenshot says Merge this and the next sentence |
||||||||||||
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. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. which is there a |
||||||||||||
The Laptop in this tutorial uses the laptop's USB 3.0 xHCI Controller. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 heading |
||||||||||||
|
||||||||||||
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. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. what does |
||||||||||||
{{< /alert >}} | ||||||||||||
|
||||||||||||
The VM image for this tutorial does not contain three packages required by Viam. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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> | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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> | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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> | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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
|
||||||||||||
{{% /alert %}} | ||||||||||||
|
||||||||||||
## Setup in the Viam app | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
|
||||||||||||
### Setup an account on the Viam app | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
^ Let's not overuse |
||||||||||||
|
||||||||||||
If you do not already have an account on the Viam app, go to app.viam.com and sign up. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
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. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
|
||||||||||||
### Install the viam-server and Viam app config | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
|
||||||||||||
For this section, you will perform steps listed on the [Robots](https://app.viam.com/robots) page in the VM's terminal window. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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? |
||||||||||||
|
||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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**. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
^ 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
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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, : | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
|
||||||||||||
{{< figure src="../img/viam-on-vm/successful-connection.png" width="400px" alt="Successful connection message." title="Successful connection message." >}} | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Does this figure need a title? |
||||||||||||
|
||||||||||||
## Create a mock robot | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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/). | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
^this tutorial goes further than just setup