diff --git a/docs/appendix/_index.md b/docs/appendix/_index.md
index b0bed910c9..5915c02644 100644
--- a/docs/appendix/_index.md
+++ b/docs/appendix/_index.md
@@ -1,7 +1,7 @@
---
title: "Appendix"
linkTitle: "Appendix"
-weight: 90
+weight: 900
simple_list: true
type: "docs"
description: "Reference and Background Material"
diff --git a/docs/appendix/changelog.md b/docs/appendix/changelog.md
index db455e22a8..bfb1b8525f 100644
--- a/docs/appendix/changelog.md
+++ b/docs/appendix/changelog.md
@@ -70,7 +70,7 @@ You can use a [mobile application](/fleet/#the-viam-mobile-app), available for d
### Added: Power sensor component
-You now have the capability to use a [power sensor component](/build/configure/components/power-sensor/) to monitor the voltage, current, and power consumption within your machine's system.
+You now have the capability to use a [power sensor component](/components/power-sensor/) to monitor the voltage, current, and power consumption within your machine's system.
### Added: Filter component's data before the cloud
@@ -87,7 +87,7 @@ To learn more, see [this tutorial](/tutorials/configure/pet-photographer/) on cr
### Added: Configure a customlinux board
-You can now use boards like the [Mediatek Genio 500 Pumpkin](https://ologicinc.com/portfolio/mediateki500/) that run Linux operating systems with the [`customlinux` board model](/build/configure/components/board/customlinux/).
+You can now use boards like the [Mediatek Genio 500 Pumpkin](https://ologicinc.com/portfolio/mediateki500/) that run Linux operating systems with the [`customlinux` board model](/components/board/customlinux/).
### Added: Image inspection for ML training
@@ -120,7 +120,7 @@ Note that currently, accounts from different SSO providers are treated separatel
### Improved: Arm component API
-Arm models now support the [`GetKinematics` method](/build/configure/components/arm/#getkinematics) in the arm API, allowing you to request and receive kinematic information.
+Arm models now support the [`GetKinematics` method](/components/arm/#getkinematics) in the arm API, allowing you to request and receive kinematic information.
## June 2023
@@ -145,7 +145,7 @@ Visit the [GitHub repository](https://github.com/viamrobotics/odrive) to learn h
### Added: Implement custom robotic arms as Viam modules
When prototyping a robotic arm, you can now facilitate movement without creating your own motion planning.
-This update enables you to implement custom models of an arm component as a [modular resource](/registry/) by coding three endpoints of the [Arm API](/build/configure/components/arm/#api):
+This update enables you to implement custom models of an arm component as a [modular resource](/registry/) by coding three endpoints of the [Arm API](/components/arm/#api):
- `getJointPositions`
- `movetoJointPositions`
@@ -157,7 +157,7 @@ For more information, see this [tutorial on creating a custom arm](/registry/exa
### Added: Apply a crop transform to camera views
-You can now apply a [crop transform](/build/configure/components/camera/transform/) to the views of your connected cameras in the Viam app.
+You can now apply a [crop transform](/components/camera/transform/) to the views of your connected cameras in the Viam app.
This feature enables you to focus on a specific area of your camera feed.
@@ -167,7 +167,7 @@ For example, crop a video stream of a busy street to just the sidewalk.
To better control gantries with Viam, you can now:
-- Specify speed values when calling the `MovetoPosition` method on [Gantry components](/build/configure/components/gantry/).
+- Specify speed values when calling the `MovetoPosition` method on [Gantry components](/components/gantry/).
This allows you to define the speed at which each axis moves to the desired position, providing enhanced precision and control over the gantry's movement.
- Set a home position for Gantry components to facilitate position resetting or maintain consistent starting points.
@@ -662,16 +662,16 @@ Find more information in the [micro-RDK documentation](/get-started/installation
### Added: Remote control power input
-On your robot's **Control** tab on the [Viam app](https://app.viam.com/), you can now set the power of a [base](/build/configure/components/base/).
+On your robot's **Control** tab on the [Viam app](https://app.viam.com/), you can now set the power of a [base](/components/base/).
The base control UI previously always sent 100% power to the base's motors.
### Added: New encoder model: AMS AS5048
-The [AMS AS5048](/build/configure/components/encoder/ams-as5048/) is now supported.
+The [AMS AS5048](/components/encoder/ams-as5048/) is now supported.
### Added: GetLinearAcceleration method
-The movement sensor API now includes a [GetLinearAcceleration](/build/configure/components/movement-sensor/#getlinearacceleration) method.
+The movement sensor API now includes a [GetLinearAcceleration](/components/movement-sensor/#getlinearacceleration) method.
### Added: Support for capsule geometry
@@ -699,8 +699,8 @@ You can now supply kinematic information using URDF files when implementing your
There are two new movement sensor {{< glossary_tooltip term_id="model" text="models" >}}:
-- [ADXL345](/build/configure/components/movement-sensor/adxl345/): A 3-axis accelerometer
-- [MPU-6050](/build/configure/components/movement-sensor/mpu6050/): A 6-axis accelerometer and gyroscope
+- [ADXL345](/components/movement-sensor/adxl345/): A 3-axis accelerometer
+- [MPU-6050](/components/movement-sensor/mpu6050/): A 6-axis accelerometer and gyroscope
### Improved: Camera performance and reliability
@@ -739,7 +739,7 @@ Now is uses a simpler unary approach that is more performant on batched unary ca
- Transform
- Join pointclouds
-For information on configuring any camera model, see [Camera Component](/build/configure/components/camera/).
+For information on configuring any camera model, see [Camera Component](/components/camera/).
### Changed: App code sample tab name update
@@ -747,7 +747,7 @@ Changed the name of the **Connect** tab to **Code sample** based on user feedbac
### Added: New servo model
-A new [servo model called `gpio`](/build/configure/components/servo/gpio/) supports servos connected to non-Raspberry Pi boards.
+A new [servo model called `gpio`](/components/servo/gpio/) supports servos connected to non-Raspberry Pi boards.
### Added: RTT indicator in the app
@@ -785,6 +785,6 @@ Other service configurations are not affected.
### Removed: width and height fields from camera API
-Removed `width` and `height` from the response of the [`GetImage`](/build/configure/components/camera/#getimage) method in the camera API.
+Removed `width` and `height` from the response of the [`GetImage`](/components/camera/#getimage) method in the camera API.
This does not impact any existing camera models.
If you write a custom camera model, you no longer need to implement the `width` and `height` fields.
diff --git a/docs/appendix/glossary/api-namespace-triplet.md b/docs/appendix/glossary/api-namespace-triplet.md
index 573ad898fb..5de9efe02e 100644
--- a/docs/appendix/glossary/api-namespace-triplet.md
+++ b/docs/appendix/glossary/api-namespace-triplet.md
@@ -18,5 +18,5 @@ This requirement ensures that when a resource of that model is deployed, you can
For example:
-- The API of the built-in component [camera](/build/configure/components/camera/) is `rdk:component:camera`, which exposes methods such as `GetImage()`.
+- The API of the built-in component [camera](/components/camera/) is `rdk:component:camera`, which exposes methods such as `GetImage()`.
- The API of the built-in service [vision](/ml/vision/) is `rdk:service:vision`, which exposes methods such as `GetDetectionsFromCamera()`.
diff --git a/docs/appendix/glossary/base.md b/docs/appendix/glossary/base.md
index d7e3edf4a1..a193873e05 100644
--- a/docs/appendix/glossary/base.md
+++ b/docs/appendix/glossary/base.md
@@ -1,7 +1,7 @@
---
title: Base
id: base
-full_link: /build/configure/components/base/
+full_link: /components/base/
short_description: A physical, mobile platform that the other parts of a mobile robot attach to.
aka:
---
@@ -9,4 +9,4 @@ aka:
A physical, mobile platform that the other parts of a mobile robot attach to.
For example, a wheeled rover, boat, or flying drone.
-For more information see [Base Component](/build/configure/components/base/).
+For more information see [Base Component](/components/base/).
diff --git a/docs/appendix/glossary/board.md b/docs/appendix/glossary/board.md
index e8f29e44fe..fff8bb2efd 100644
--- a/docs/appendix/glossary/board.md
+++ b/docs/appendix/glossary/board.md
@@ -1,7 +1,7 @@
---
title: Board
id: board
-full_link: /build/configure/components/board/
+full_link: /components/board/
short_description: A board is the signal wire hub of a machine that provides access to GPIO pins, SPI or I2C.
aka:
---
@@ -10,4 +10,4 @@ A board is the signal wire hub of a machine that provides access to GPIO pins, S
Examples of boards include Jetson, Raspberry Pi, Numato, or Arduino.
-For more information see [Board Component](/build/configure/components/board/).
+For more information see [Board Component](/components/board/).
diff --git a/docs/appendix/glossary/component.md b/docs/appendix/glossary/component.md
index f297469c4d..6ccf2ea2ac 100644
--- a/docs/appendix/glossary/component.md
+++ b/docs/appendix/glossary/component.md
@@ -1,7 +1,7 @@
---
title: Component
id: component
-full_link: /build/configure/components/
+full_link: /components/
short_description: A resource that represents a physical component in a robot which a computer controls; for example, a servo, a camera, or an arm.
aka:
---
@@ -10,4 +10,4 @@ A resource that represents a physical component in a robot which a computer cont
Each component is typed by a proto API, such as the [component proto definitions](https://github.com/viamrobotics/api/tree/main/proto/viam/component).
-For more information, see [Components](/build/configure/components/).
+For more information, see [Components](/components/).
diff --git a/docs/appendix/glossary/gantry.md b/docs/appendix/glossary/gantry.md
index 2d7eda6b8f..991d43fe82 100644
--- a/docs/appendix/glossary/gantry.md
+++ b/docs/appendix/glossary/gantry.md
@@ -1,7 +1,7 @@
---
title: Gantry
id: attribute
-full_link: /build/configure/components/gantry/
+full_link: /components/gantry/
short_description: A mechanical system that only uses linear motion to carry out a task.
aka:
---
diff --git a/docs/appendix/glossary/model.md b/docs/appendix/glossary/model.md
index c96abbdada..8b479dbdd4 100644
--- a/docs/appendix/glossary/model.md
+++ b/docs/appendix/glossary/model.md
@@ -10,7 +10,7 @@ A particular implementation of a {{< glossary_tooltip term_id="resource" text="r
Models allow you to control hardware or software of a similar category, such as motors, with a consistent set of methods as an interface, even if the underlying implementation differs.
-For example, some _models_ of DC motors communicate using [GPIO](/build/configure/components/board/), while other DC motors use serial protocols like the [SPI bus](/build/configure/components/board/#spis).
+For example, some _models_ of DC motors communicate using [GPIO](/components/board/), while other DC motors use serial protocols like the [SPI bus](/components/board/#spis).
Regardless, you can power any motor model that implements the `rdk:component:motor` API with the `SetPower()` method.
Models are either included with [`viam-server`](/get-started/installation/), provided in {{< glossary_tooltip term_id="module" text="custom modules" >}} available for download from the [Viam registry](https://app.viam.com/registry), or installed as [local modules](/registry/configure/#local-modules).
diff --git a/docs/appendix/glossary/service.md b/docs/appendix/glossary/service.md
index 3ef0002685..96855c63af 100644
--- a/docs/appendix/glossary/service.md
+++ b/docs/appendix/glossary/service.md
@@ -1,7 +1,7 @@
---
title: Service
id: service
-full_link: /build/configure/services/
+full_link: /services/
short_description: Built-in software packages for complex capabilities such as SLAM, Computer Vision, Motion Planning, and Data Collection.
aka:
---
@@ -10,4 +10,4 @@ Services are built-in software packages for complex capabilities such as Simulta
Each service is typed by a proto API, such as the [service proto definitions](https://github.com/viamrobotics/api/tree/main/proto/viam/service).
-For more information, see [Services](/build/configure/services/).
+For more information, see [Services](/services/).
diff --git a/docs/appendix/learning-resources.md b/docs/appendix/learning-resources.md
index 77ad2f97c4..83ad67232d 100644
--- a/docs/appendix/learning-resources.md
+++ b/docs/appendix/learning-resources.md
@@ -29,11 +29,11 @@ Note that some servos have a different PWM range, mapping to a different set of
#### Hardware Requirements
-Unlike [motors](/build/configure/components/motor/), servos do not require a motor driver chip.
+Unlike [motors](/components/motor/), servos do not require a motor driver chip.
A typical servo control setup comprises the following:
-- A Raspberry Pi (or other [board](/build/configure/components/board/))
+- A Raspberry Pi (or other [board](/components/board/))
- A servo
- An appropriate power supply
- If the servo will not be under any significant load and thus won’t draw much current, you may be able to get away with powering it off 5V (if that’s its required voltage) from the Pi pins.
@@ -47,7 +47,7 @@ Always disconnect devices from power before plugging, unplugging or moving wires
Here's an example of how a servo might be wired to a Raspberry Pi:
-![A diagram showing the signal wire of a servo connected to pin 16 on a Raspberry Pi. The servo's power wires are connected to a 4.8V power supply.](/build/configure/components/servo/servo-wiring.png)
+![A diagram showing the signal wire of a servo connected to pin 16 on a Raspberry Pi. The servo's power wires are connected to a 4.8V power supply.](/components/servo/servo-wiring.png)
### Resistors
diff --git a/docs/appendix/troubleshooting.md b/docs/appendix/troubleshooting.md
index 00a70007d3..92b87461a1 100644
--- a/docs/appendix/troubleshooting.md
+++ b/docs/appendix/troubleshooting.md
@@ -162,7 +162,7 @@ It will resemble the following:
**Additional Errors:** `cannot open webcam`, and `found no webcams`.
-**Description:** When working with a [camera](/build/configure/components/camera/) component on the Linux platform, your Linux OS must be able to access the camera properly, and the camera must be configured to use a pixel format that Viam supports.
+**Description:** When working with a [camera](/components/camera/) component on the Linux platform, your Linux OS must be able to access the camera properly, and the camera must be configured to use a pixel format that Viam supports.
**Solution:** On your Linux system, verify each of the following:
@@ -210,7 +210,7 @@ It will resemble the following:
Replace `/dev/video0` in the above command with the video path you determined for your video device above, if different.
The command will return a list of pixel formats your camera supports, such as `MJPG` or `YUYV`.
- In order to use a camera device with Viam, it must support at least one of the [pixel formats supported by Viam](/build/configure/components/camera/webcam/#using-format).
+ In order to use a camera device with Viam, it must support at least one of the [pixel formats supported by Viam](/components/camera/webcam/#using-format).
If your camera does not support any of these formats, it cannot be used with Viam.
If you are still having issues with your camera component on the Linux platform, and would like to [file an issue](https://github.com/viamrobotics/rdk), include your machine's camera debug file contained in the
/root/.viam/debug/components/camera directory.
@@ -219,7 +219,7 @@ This file contains basic diagnostic and configuration information about your cam
### Error: failed to find the best driver that fits the constraints
-**Description:** When working with a [camera](/build/configure/components/camera/) component, depending on the camera, you may need to explicitly provide some camera-specific configuration parameters.
+**Description:** When working with a [camera](/components/camera/) component, depending on the camera, you may need to explicitly provide some camera-specific configuration parameters.
**Solution:** Check the specifications for your camera, and manually provide configuration parameters such as width and height to the camera component configuration page on the [Viam app](https://app.viam.com).
Under **Config > Components**, find your camera, then fill in your camera's specific configuration either using the **Show more** button to show the relevant configuration options, or the **Go to advanced** link in the component panel's upper-right to enter these attributes manually.
diff --git a/docs/build/_index.md b/docs/build/_index.md
index e4d27910d1..05c51847a8 100644
--- a/docs/build/_index.md
+++ b/docs/build/_index.md
@@ -1,7 +1,7 @@
---
title: "Build"
linkTitle: "Build"
-weight: 32
+weight: 410
type: "docs"
layout: "empty"
empty_node: true
diff --git a/docs/build/configure/_index.md b/docs/build/configure/_index.md
index 63477f1d56..f33c19f6bc 100644
--- a/docs/build/configure/_index.md
+++ b/docs/build/configure/_index.md
@@ -171,7 +171,7 @@ You must configure each component with a type, a model, a name, attributes, and
You can choose any unique name for a component.
- `attributes`: A struct to define things like how the component is wired to the robot, its dimensions, and other specifications; attributes vary widely between models.
- See the [component documentation](/build/configure/components/) for a given component type and model for more details.
+ See the [component documentation](/components/) for a given component type and model for more details.
{{% alert title="Tip" color="tip" %}}
@@ -182,14 +182,14 @@ You must configure each component with a type, a model, a name, attributes, and
- `depends_on`: Any components that a given component relies upon, and that must be initialized on boot before this component is initialized.
Many built-in components have convenient implicit dependencies, in which case `depends_on` can be left blank.
- For example, a [`gpio` motor](/build/configure/components/motor/gpio/) depends on the `board` to which it is wired, but it has a dedicated `board` attribute and `viam-server` will automatically initialize that board before it looks for the motor.
+ For example, a [`gpio` motor](/components/motor/gpio/) depends on the `board` to which it is wired, but it has a dedicated `board` attribute and `viam-server` will automatically initialize that board before it looks for the motor.
If you are configuring several similar components, you can use the **Duplicate component** button in the upper-right of a component's configuration pane to create a new identical component beneath your existing one.
Be sure to edit the duplicated component to change any parameters that are unique to the new component, such as its name and pins.
To delete a component, click the trash can icon in the upper-right of the component configuration pane.
-For specific information on how to configure each supported component type, see the [components documentation](/build/configure/components/).
+For specific information on how to configure each supported component type, see the [components documentation](/components/).
{{% alert title="Tip" color="tip" %}}
@@ -202,7 +202,7 @@ Meanwhile the **Code sample** tab will also update to include code for some basi
## Services
-[Services](/build/configure/services/) are built-in software packages that make it easier to add complex capabilities such as motion planning or object detection to your robot.
+[Services](/services/) are built-in software packages that make it easier to add complex capabilities such as motion planning or object detection to your robot.
For services, the `type` specifies which of the Viam services you want to use on your robot, such as the vision service or the motion service.
@@ -210,7 +210,7 @@ The `name` serves as an identifier when accessing the resource from your code, a
You can choose any unique name for a service.
The other aspects of configuring a service are highly specific to the type of service.
-See the [services documentation](/build/configure/services/) for more information.
+See the [services documentation](/services/) for more information.
## Modules
diff --git a/docs/build/configure/parts-and-remotes.md b/docs/build/configure/parts-and-remotes.md
index 5fddb381a9..62d2b93307 100644
--- a/docs/build/configure/parts-and-remotes.md
+++ b/docs/build/configure/parts-and-remotes.md
@@ -14,7 +14,7 @@ This document explains how to establish secure connections between robots.
### Robot parts
-Robots are organized into _parts_, where each part represents a computer (a single-board computer, desktop, laptop, or other computer) [running `viam-server`](/get-started/installation/), the hardware [components](/build/configure/components/) attached to it, and any [services](/build/configure/services/) or other resources running on it.
+Robots are organized into _parts_, where each part represents a computer (a single-board computer, desktop, laptop, or other computer) [running `viam-server`](/get-started/installation/), the hardware [components](/components/) attached to it, and any [services](/services/) or other resources running on it.
Every robot has a main part which is automatically created when you create the robot.
Multi-part robots also have one or more _sub-parts_ representing additional computers running `viam-server`.
diff --git a/docs/build/micro-rdk/base/_index.md b/docs/build/micro-rdk/base/_index.md
index feed11a2e1..bb8792dafc 100644
--- a/docs/build/micro-rdk/base/_index.md
+++ b/docs/build/micro-rdk/base/_index.md
@@ -13,7 +13,7 @@ aliases:
---
A base is the moving platform that the other parts of a mobile robot attach to.
-For more information and models supported by the {{< glossary_tooltip term_id="rdk" text="RDK" >}}, see the [Base Component](/build/configure/components/base/).
+For more information and models supported by the {{< glossary_tooltip term_id="rdk" text="RDK" >}}, see the [Base Component](/components/base/).
## Supported Models
@@ -26,7 +26,7 @@ For configuration information, click on the supported base model name:
## API
-The micro-RDK [base API](/build/configure/components/base/#api) is limited to the following supported client SDK API methods, which operate the same as in the full-featured RDK:
+The micro-RDK [base API](/components/base/#api) is limited to the following supported client SDK API methods, which operate the same as in the full-featured RDK:
-- [`Stop()`](/build/configure/components/base/#stop)
-- [`SetPower()`](/build/configure/components/base/#setpower)
+- [`Stop()`](/components/base/#stop)
+- [`SetPower()`](/components/base/#setpower)
diff --git a/docs/build/micro-rdk/board/_index.md b/docs/build/micro-rdk/board/_index.md
index 9fffa7eb8a..c68290bc3a 100644
--- a/docs/build/micro-rdk/board/_index.md
+++ b/docs/build/micro-rdk/board/_index.md
@@ -13,7 +13,7 @@ aliases:
---
A board is the signal wire hub of a robot, with GPIO pins for transmitting signals between the robot's computer and its other components.
-For more information and models supported by the {{< glossary_tooltip term_id="rdk" text="RDK" >}}, see [Board Component](/build/configure/components/board/).
+For more information and models supported by the {{< glossary_tooltip term_id="rdk" text="RDK" >}}, see [Board Component](/components/board/).
## Supported Models
@@ -26,25 +26,25 @@ For configuration information, click on the supported board model name:
## API
-The micro-RDK [board API](/build/configure/components/board/#api) supports only the following client SDK API methods, which operate the same as in the full-featured RDK:
+The micro-RDK [board API](/components/board/#api) supports only the following client SDK API methods, which operate the same as in the full-featured RDK:
-- [`SetPowerMode()`](/build/configure/components/board/#setpowermode)
+- [`SetPowerMode()`](/components/board/#setpowermode)
For `GPIOPin`s:
-- [`Set()`](/build/configure/components/board/#set)
-- [`Get()`](/build/configure/components/board/#get)
-- [`GetPWM()`](/build/configure/components/board/#getpwm)
-- [`SetPWM()`](/build/configure/components/board/#setpwm)
-- [`PWMFreq()`](/build/configure/components/board/#pwmfreq)
-- [`SetPWMFreq()`](/build/configure/components/board/#setpwmfreq)
+- [`Set()`](/components/board/#set)
+- [`Get()`](/components/board/#get)
+- [`GetPWM()`](/components/board/#getpwm)
+- [`SetPWM()`](/components/board/#setpwm)
+- [`PWMFreq()`](/components/board/#pwmfreq)
+- [`SetPWMFreq()`](/components/board/#setpwmfreq)
See [PWM signals on `esp32` pins](/build/micro-rdk/board/esp32/#pwm-signals-on-esp32-pins) for more information on setting PWM frequencies with `esp32` boards.
For `AnalogReader`s:
-- [`Read()`](/build/configure/components/board/#read)
+- [`Read()`](/components/board/#read)
For `DigitalInterrupt`s:
-- [`Value()`](/build/configure/components/board/#value)
+- [`Value()`](/components/board/#value)
diff --git a/docs/build/micro-rdk/board/esp32.md b/docs/build/micro-rdk/board/esp32.md
index 8c14e59758..ed5cd9930e 100644
--- a/docs/build/micro-rdk/board/esp32.md
+++ b/docs/build/micro-rdk/board/esp32.md
@@ -30,7 +30,7 @@ To add an `esp32` board, navigate to the **Config** tab of your robot's page in
{{< alert title="Info" color="info" >}}
-The`esp32` [board](/build/configure/components/board/) model is not currently available as a built-in option in [the Viam app](https://app.viam.com), so you cannot use **Builder** mode to configure this board.
+The`esp32` [board](/components/board/) model is not currently available as a built-in option in [the Viam app](https://app.viam.com), so you cannot use **Builder** mode to configure this board.
{{< /alert >}}
@@ -98,8 +98,8 @@ The following attributes are available for `esp32` boards:
| `digital_interrupts` | object | Optional | Any digital interrupts' GPIO number. See [configuration info](#digital_interrupts). |
| `pins` | object | Required | The GPIO number of any GPIO pins you wish to use as input/output with the [`GPIOPin` API](/build/program/apis/#gpio-pins). |
-Any pin not specified in either `"pins"` or `"digital_interrupts"` cannot be interacted with through the [board API](/build/configure/components/board/#api).
-Interaction with digital interrupts is only supported with the [board API](/build/configure/components/board/#api); these digital interrupts cannot be used as software interrupts in driver implementations.
+Any pin not specified in either `"pins"` or `"digital_interrupts"` cannot be interacted with through the [board API](/components/board/#api).
+Interaction with digital interrupts is only supported with the [board API](/components/board/#api); these digital interrupts cannot be used as software interrupts in driver implementations.
### `analogs`
diff --git a/docs/build/micro-rdk/encoder/_index.md b/docs/build/micro-rdk/encoder/_index.md
index 0e33ff9b6c..dc776e3351 100644
--- a/docs/build/micro-rdk/encoder/_index.md
+++ b/docs/build/micro-rdk/encoder/_index.md
@@ -13,7 +13,7 @@ aliases:
---
An encoder is a special type of sensor that measures rotation of a motor or joint.
-For more information and models supported by the {{< glossary_tooltip term_id="rdk" text="RDK" >}}, see [Encoder Component](/build/configure/components/encoder/).
+For more information and models supported by the {{< glossary_tooltip term_id="rdk" text="RDK" >}}, see [Encoder Component](/components/encoder/).
## Supported Models
@@ -29,8 +29,8 @@ Click on the model names above for configuration information.
## API
-The micro-RDK [encoder API](/build/configure/components/encoder/#api) supports only the following supported client SDK API methods, which operate the same ways as those in the full-featured RDK:
+The micro-RDK [encoder API](/components/encoder/#api) supports only the following supported client SDK API methods, which operate the same ways as those in the full-featured RDK:
-- [`ResetPosition()`](/build/configure/components/encoder/#resetposition)
-- [`GetPosition()`](/build/configure/components/encoder/#getposition)
-- [`GetProperties()`](/build/configure/components/encoder/#getproperties)
+- [`ResetPosition()`](/components/encoder/#resetposition)
+- [`GetPosition()`](/components/encoder/#getposition)
+- [`GetProperties()`](/components/encoder/#getproperties)
diff --git a/docs/build/micro-rdk/encoder/incremental.md b/docs/build/micro-rdk/encoder/incremental.md
index 95aa7a3b69..156d4ebc3f 100644
--- a/docs/build/micro-rdk/encoder/incremental.md
+++ b/docs/build/micro-rdk/encoder/incremental.md
@@ -23,7 +23,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `encoder` type, then select the `incremental` model.
Enter a name for your encoder and click **Create**.
-![Configuration of an incremental encoder in the Viam app config builder.](/build/configure/components/encoder/configure-incremental.png)
+![Configuration of an incremental encoder in the Viam app config builder.](/components/encoder/configure-incremental.png)
Fill in and edit the attributes as applicable.
diff --git a/docs/build/micro-rdk/encoder/single.md b/docs/build/micro-rdk/encoder/single.md
index 1d32899977..67a985bc8b 100644
--- a/docs/build/micro-rdk/encoder/single.md
+++ b/docs/build/micro-rdk/encoder/single.md
@@ -10,8 +10,8 @@ aliases:
# SMEs: Rand
---
-A `single` encoder sends a signal from the rotating encoder over a single wire to one pin on the [board](/build/configure/components/board/).
-The direction of spin is dictated by the [motor](/build/configure/components/motor/) that has this encoder's name in its `encoder` attribute field.
+A `single` encoder sends a signal from the rotating encoder over a single wire to one pin on the [board](/components/board/).
+The direction of spin is dictated by the [motor](/components/motor/) that has this encoder's name in its `encoder` attribute field.
{{< tabs name="Configure an single encoder" >}}
{{% tab name="JSON Template" %}}
@@ -54,6 +54,6 @@ The following attributes are available for `single` encoders:
| Name | Type | Inclusion | Description |
| ---- | ---- | --------- | ----------- |
| `pin` | object | **Required** | GPIO number of the pin to which the encoder is wired. |
-| `dir_flip` | boolean | **Required** | If the encoder's count should increment or decrement in its initial state before a [`SetPower()`](/build/configure/components/motor/#setpower) call is made to an encoded [motor](/build/micro-rdk/motor/). `true` implies decrement. |
+| `dir_flip` | boolean | **Required** | If the encoder's count should increment or decrement in its initial state before a [`SetPower()`](/components/motor/#setpower) call is made to an encoded [motor](/build/micro-rdk/motor/). `true` implies decrement. |
{{< readfile "/static/include/components/test-control/encoder-control.md" >}}
diff --git a/docs/build/micro-rdk/motor/_index.md b/docs/build/micro-rdk/motor/_index.md
index 9ea637324a..8b19d6731e 100644
--- a/docs/build/micro-rdk/motor/_index.md
+++ b/docs/build/micro-rdk/motor/_index.md
@@ -13,7 +13,7 @@ aliases:
---
A motor is a rotating machine that transforms electrical energy into mechanical energy.
-For more information and models supported by the {{< glossary_tooltip term_id="rdk" text="RDK" >}}, see [Motor Component](/build/configure/components/motor/).
+For more information and models supported by the {{< glossary_tooltip term_id="rdk" text="RDK" >}}, see [Motor Component](/components/motor/).
## Supported Models
@@ -26,10 +26,10 @@ For configuration information, click on the supported motor model name:
## API
-The micro-RDK [motor API](/build/configure/components/motor/#api) supports only the following client SDK API methods, which operate the same as in the full-featured RDK:
+The micro-RDK [motor API](/components/motor/#api) supports only the following client SDK API methods, which operate the same as in the full-featured RDK:
-- [`SetPower()`](/build/configure/components/motor/#setpower)
-- [`GetPosition()`](/build/configure/components/motor/#getposition)
-- [`GetProperties()`](/build/configure/components/motor/#getproperties)
-- [`Stop()`](/build/configure/components/motor/#stop)
-- [`IsMoving()`](/build/configure/components/motor/#ismoving)
+- [`SetPower()`](/components/motor/#setpower)
+- [`GetPosition()`](/components/motor/#getposition)
+- [`GetProperties()`](/components/motor/#getproperties)
+- [`Stop()`](/components/motor/#stop)
+- [`IsMoving()`](/components/motor/#ismoving)
diff --git a/docs/build/micro-rdk/motor/gpio.md b/docs/build/micro-rdk/motor/gpio.md
index 87096f47e0..d67aa9a96e 100644
--- a/docs/build/micro-rdk/motor/gpio.md
+++ b/docs/build/micro-rdk/motor/gpio.md
@@ -13,7 +13,7 @@ aliases:
The `gpio` model supports [DC motors](https://en.wikipedia.org/wiki/DC_motor) (both brushed and brushless).
You can configure [encoders](/build/micro-rdk/encoder/) to work with `gpio` motors.
-Find more information in the [encoded motor documentation](/build/configure/components/motor/gpio/encoded-motor/).
+Find more information in the [encoded motor documentation](/components/motor/gpio/encoded-motor/).
To configure a DC motor as a component of your robot, first configure the [board](/build/micro-rdk/board/) to which the motor driver is wired.
Then add your motor:
@@ -26,7 +26,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `motor` type, then select the `gpio` model.
Enter a name for your motor and click **Create**.
-![G P I O motor config in the builder UI with the In1 and In2 pins configured and the PWM pin field left blank.](/build/configure/components/motor/gpio-config-ui.png)
+![G P I O motor config in the builder UI with the In1 and In2 pins configured and the PWM pin field left blank.](/components/motor/gpio-config-ui.png)
Edit and fill in the attributes as applicable.
@@ -114,7 +114,7 @@ The following attributes are available for `gpio` motors:
| `max_power_pct` | number | Optional | Range is 0.06 to 1.0; sets a limit on maximum power percentage sent to the motor.
Default: `1.0` |
| `pwm_freq` | int | Optional | Sets the PWM pulse frequency in Hz. Many motors operate optimally in the kHz range.
Default: `800` |
| `dir_flip` | bool | Optional | Flips the direction of "forward" versus "backward" rotation. Default: `false` |
-| `encoder` | string | Optional | The name of an encoder attached to this motor. See [encoded motor](/build/configure/components/motor/gpio/encoded-motor/). |
+| `encoder` | string | Optional | The name of an encoder attached to this motor. See [encoded motor](/components/motor/gpio/encoded-motor/). |
Refer to your motor and motor driver data sheets for specifics.
diff --git a/docs/build/micro-rdk/movement-sensor/_index.md b/docs/build/micro-rdk/movement-sensor/_index.md
index 0a6d7143c4..0836519b1b 100644
--- a/docs/build/micro-rdk/movement-sensor/_index.md
+++ b/docs/build/micro-rdk/movement-sensor/_index.md
@@ -13,7 +13,7 @@ aliases:
---
A movement sensor is a sensor that gives data on where a robot is and how fast it is moving.
-For more information and models supported by the {{< glossary_tooltip term_id="rdk" text="RDK" >}}, see [Movement Sensor Component](/build/configure/components/movement-sensor/).
+For more information and models supported by the {{< glossary_tooltip term_id="rdk" text="RDK" >}}, see [Movement Sensor Component](/components/movement-sensor/).
## Configuration
@@ -27,11 +27,11 @@ For configuration information, click a supported movement sensor model name:
## API
-The micro-RDK [movement sensor API](/build/configure/components/movement-sensor/#api) supports only the following client SDK API methods, which operate the same as in the full-featured RDK:
+The micro-RDK [movement sensor API](/components/movement-sensor/#api) supports only the following client SDK API methods, which operate the same as in the full-featured RDK:
-- [`GetAngularVelocity()`](/build/configure/components/movement-sensor/#getangularvelocity)
-- [`GetLinearVelocity()`](/build/configure/components/movement-sensor/#getlinearvelocity)
-- [`GetCompassHeading()`](/build/configure/components/movement-sensor/#getcompassheading)
-- [`GetPosition()`](/build/configure/components/movement-sensor/#getposition)
-- [`GetProperties()`](/build/configure/components/movement-sensor/#getproperties)
-- [`GetLinearAcceleration()`](/build/configure/components/movement-sensor/#getlinearacceleration)
+- [`GetAngularVelocity()`](/components/movement-sensor/#getangularvelocity)
+- [`GetLinearVelocity()`](/components/movement-sensor/#getlinearvelocity)
+- [`GetCompassHeading()`](/components/movement-sensor/#getcompassheading)
+- [`GetPosition()`](/components/movement-sensor/#getposition)
+- [`GetProperties()`](/components/movement-sensor/#getproperties)
+- [`GetLinearAcceleration()`](/components/movement-sensor/#getlinearacceleration)
diff --git a/docs/build/micro-rdk/movement-sensor/accel-adxl345.md b/docs/build/micro-rdk/movement-sensor/accel-adxl345.md
index 01c508f8c2..3a8ea2ddd3 100644
--- a/docs/build/micro-rdk/movement-sensor/accel-adxl345.md
+++ b/docs/build/micro-rdk/movement-sensor/accel-adxl345.md
@@ -23,7 +23,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `movement-sensor` type, then select the `accel-adxl345` model.
Enter a name for your movement sensor and click **Create**.
-{{< imgproc src="/build/configure/components/movement-sensor/adxl345-builder.png" alt="Creation of an `accel-adxl345` movement sensor in the Viam app config builder." resize="600x" >}}
+{{< imgproc src="/components/movement-sensor/adxl345-builder.png" alt="Creation of an `accel-adxl345` movement sensor in the Viam app config builder." resize="600x" >}}
Copy and paste the following attribute template into your movement sensor's **Attributes** box.
Then remove and fill in the attributes as applicable to your movement sensor, according to the table below.
@@ -128,4 +128,4 @@ Then remove and fill in the attributes as applicable to your movement sensor, ac
After you configure your movement sensor, navigate to the [Control tab](/fleet/machines/#control) and select the dedicated movement sensor dropdown panel.
This panel presents the data collected by the movement sensor.
-{{
}}
+{{}}
diff --git a/docs/build/micro-rdk/movement-sensor/gyro-mpu6050.md b/docs/build/micro-rdk/movement-sensor/gyro-mpu6050.md
index 26fd5abcc1..eb892d8679 100644
--- a/docs/build/micro-rdk/movement-sensor/gyro-mpu6050.md
+++ b/docs/build/micro-rdk/movement-sensor/gyro-mpu6050.md
@@ -20,7 +20,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `movement-sensor` type, then select the `gyro-mpu6050` model.
Enter a name for your movement sensor and click **Create**.
-{{< imgproc src="/build/configure/components/movement-sensor/mpu6050-builder.png" alt="Creation of an `gyro-mpu6050` movement sensor in the Viam app config builder." resize="600x" >}}
+{{< imgproc src="/components/movement-sensor/mpu6050-builder.png" alt="Creation of an `gyro-mpu6050` movement sensor in the Viam app config builder." resize="600x" >}}
Copy and paste the following attribute template into your movement sensor's **Attributes** box.
Then remove and fill in the attributes as applicable to your movement sensor, according to the table below.
@@ -117,7 +117,7 @@ Then remove and fill in the attributes as applicable to your movement sensor, ac
| Name | Type | Inclusion | Description |
| --------------------- | ------- | ------------ | ----------- |
| `board` | string | **Required** | The `name` of the [board](/build/micro-rdk/board/) to which the device is wired. |
-| `i2c_bus` | string | **Required** | The `name` of the [I2C bus configured](/build/configure/components/board/#i2cs) on your [board](/build/configure/components/board/) wired to this device. |
+| `i2c_bus` | string | **Required** | The `name` of the [I2C bus configured](/components/board/#i2cs) on your [board](/components/board/) wired to this device. |
| `use_alt_i2c_address` | boolean | Optional | Depends on whether you wire AD0 low (leaving the default address of 0x68) or high (making the address 0x69). If high, set `true`. If low, set `false`.
Default: `false` |
## Test the movement sensor
@@ -126,4 +126,4 @@ After you configure your movement sensor, navigate to the [Control tab](/fleet/m
This panel presents the data collected by the movement sensor.
The sections in the panel include the angular velocity and linear acceleration.
-{{}}
+{{}}
diff --git a/docs/build/micro-rdk/servo/_index.md b/docs/build/micro-rdk/servo/_index.md
index 035a904857..2eb65d24ff 100644
--- a/docs/build/micro-rdk/servo/_index.md
+++ b/docs/build/micro-rdk/servo/_index.md
@@ -14,7 +14,7 @@ aliases:
The servo component supports ["RC" or "hobby" servo motors](https://learn.adafruit.com/adafruit-motor-selection-guide/rc-servos).
These are small motors with built-in potentiometer position sensors, enabling you to control the angular position of the servo precisely.
-For more information and models supported by the {{< glossary_tooltip term_id="rdk" text="RDK" >}}, see [Servo Component](/build/configure/components/servo/).
+For more information and models supported by the {{< glossary_tooltip term_id="rdk" text="RDK" >}}, see [Servo Component](/components/servo/).
## Supported Models
@@ -27,8 +27,8 @@ For configuration information, click on the supported servo model name:
## API
-The micro-RDK [servo API](/build/configure/components/servo/#api) supports the following client SDK API methods, which operate the same as in the full-featured RDK:
+The micro-RDK [servo API](/components/servo/#api) supports the following client SDK API methods, which operate the same as in the full-featured RDK:
-- [`Move()`](/build/configure/components/servo/#move)
-- [`GetPosition()`](/build/configure/components/servo/#getposition)
-- [`Stop()`](/build/configure/components/servo/#stop)
+- [`Move()`](/components/servo/#move)
+- [`GetPosition()`](/components/servo/#getposition)
+- [`Stop()`](/components/servo/#stop)
diff --git a/docs/build/micro-rdk/servo/gpio.md b/docs/build/micro-rdk/servo/gpio.md
index 34cc8b94bf..7835227637 100644
--- a/docs/build/micro-rdk/servo/gpio.md
+++ b/docs/build/micro-rdk/servo/gpio.md
@@ -21,7 +21,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `servo` type, then select the `gpio` model.
Enter a name for your servo and click **Create**.
-![An example configuration for a gpio servo in the Viam app Config Builder.](/build/configure/components/servo/gpio-servo-ui-config.png)
+![An example configuration for a gpio servo in the Viam app Config Builder.](/components/servo/gpio-servo-ui-config.png)
Copy and paste the following attribute template into your servo's **Attributes** box.
Then remove and fill in the attributes as applicable to your servo, according to the table below.
diff --git a/docs/build/program/_index.md b/docs/build/program/_index.md
index 7186cd8c44..48d1906c63 100644
--- a/docs/build/program/_index.md
+++ b/docs/build/program/_index.md
@@ -30,9 +30,9 @@ The SDKs provide idiomatic wrappers around Viam's robot [gRPC APIs](https://gith
## Requirements
-Before you get started with your program, ensure that you have [installed `viam-server`](/get-started/installation/) on the computer you want to use to control your robot (likely a [single-board computer](/build/configure/components/board/#supported-models)), and [configured your robot](/build/configure/).
+Before you get started with your program, ensure that you have [installed `viam-server`](/get-started/installation/) on the computer you want to use to control your robot (likely a [single-board computer](/components/board/#supported-models)), and [configured your robot](/build/configure/).
-Next, to install your preferred Viam SDK on your Linux or macOS development machine or [single-board computer](/build/configure/components/board/), run one of the following commands in your terminal:
+Next, to install your preferred Viam SDK on your Linux or macOS development machine or [single-board computer](/components/board/), run one of the following commands in your terminal:
{{< tabs >}}
{{% tab name="Python" %}}
diff --git a/docs/build/program/apis/_index.md b/docs/build/program/apis/_index.md
index 28670bd0ae..f00779612c 100644
--- a/docs/build/program/apis/_index.md
+++ b/docs/build/program/apis/_index.md
@@ -4,7 +4,7 @@ linkTitle: "APIs"
weight: 20
type: "docs"
description: "Access and control your robot or fleet with the SDKs' client libraries for the resource and robot APIs."
-icon: "/build/configure/services/icons/sdk.svg"
+icon: "/services/icons/sdk.svg"
tags: ["client", "sdk", "viam-server", "networking", "apis", "robot api"]
aliases:
- /program/sdks/
@@ -48,90 +48,90 @@ The ML training API allows you to get information about and cancel ML training j
These APIs provide interfaces for controlling and getting information from various components of a robot.
Built-in API methods are defined for every model of each component type.
-Documentation on using these methods in your SDK code is found on each [component page](/build/configure/components/) as follows:
+Documentation on using these methods in your SDK code is found on each [component page](/components/) as follows:
### Arm
-The [arm component](/build/configure/components/arm/) supports the following methods:
+The [arm component](/components/arm/) supports the following methods:
{{< readfile "/static/include/components/apis/arm.md" >}}
### Base
-The [base component](/build/configure/components/base/) supports the following methods:
+The [base component](/components/base/) supports the following methods:
{{< readfile "/static/include/components/apis/base.md" >}}
### Board
-The [board component](/build/configure/components/board/) supports the following methods:
+The [board component](/components/board/) supports the following methods:
{{< readfile "/static/include/components/apis/board.md" >}}
### Camera
-The [camera component](/build/configure/components/camera/) supports the following methods:
+The [camera component](/components/camera/) supports the following methods:
{{< readfile "/static/include/components/apis/camera.md" >}}
### Encoder
-The [encoder component](/build/configure/components/encoder/) supports the following methods:
+The [encoder component](/components/encoder/) supports the following methods:
{{< readfile "/static/include/components/apis/encoder.md" >}}
### Gantry
-The [gantry component](/build/configure/components/gantry/) supports the following methods:
+The [gantry component](/components/gantry/) supports the following methods:
{{< readfile "/static/include/components/apis/gantry.md" >}}
### Generic
-The [generic component](/build/configure/components/generic/) supports the following methods:
+The [generic component](/components/generic/) supports the following methods:
{{< readfile "/static/include/components/apis/generic.md" >}}
### Gripper
-The [gripper component](/build/configure/components/gripper/) supports the following methods:
+The [gripper component](/components/gripper/) supports the following methods:
{{< readfile "/static/include/components/apis/gripper.md" >}}
### Input Controller
-The [input controller component](/build/configure/components/input-controller/) supports the following methods:
+The [input controller component](/components/input-controller/) supports the following methods:
{{< readfile "/static/include/components/apis/input-controller.md" >}}
### Motor
-The [motor component](/build/configure/components/motor/) supports the following methods:
+The [motor component](/components/motor/) supports the following methods:
{{< readfile "/static/include/components/apis/motor.md" >}}
### Movement Sensor
-The [movement sensor component](/build/configure/components/movement-sensor/) supports the following methods.
+The [movement sensor component](/components/movement-sensor/) supports the following methods.
Some methods are only supported by certain models:
{{< readfile "/static/include/components/apis/movement-sensor.md" >}}
### Power Sensor
-The [power sensor component](/build/configure/components/power-sensor/) supports the following methods:
+The [power sensor component](/components/power-sensor/) supports the following methods:
{{< readfile "/static/include/components/apis/power-sensor.md" >}}
### Sensor
-The [sensor component](/build/configure/components/sensor/) supports the following methods:
+The [sensor component](/components/sensor/) supports the following methods:
{{< readfile "/static/include/components/apis/sensor.md" >}}
### Servo
-The [servo component](/build/configure/components/servo/) supports the following methods:
+The [servo component](/components/servo/) supports the following methods:
{{< readfile "/static/include/components/apis/servo.md" >}}
@@ -139,7 +139,7 @@ The [servo component](/build/configure/components/servo/) supports the following
These APIs provide interfaces for controlling and getting information from the services you configured on a robot.
Built-in API methods are defined for each service implementation.
-Documentation on using these methods in your SDK code is found on [service pages](/build/configure/services/) as follows:
+Documentation on using these methods in your SDK code is found on [service pages](/services/) as follows:
### Base Remote Control
@@ -193,19 +193,19 @@ Different [vision service](/ml/vision/) models support different methods:
### GPIO Pins
-In addition to the [board API](#board), the [board component](/build/configure/components/board/) supports the following methods for interfacing with GPIO pins on a board:
+In addition to the [board API](#board), the [board component](/components/board/) supports the following methods for interfacing with GPIO pins on a board:
{{< readfile "/static/include/components/apis/gpiopin.md" >}}
### Analog-to-Digital Converters (ADCs)
-In addition to the [board API](#board), the [board component](/build/configure/components/board/) supports the following methods for interfacing with [ADCs](/build/configure/components/board/#analogs) on a board:
+In addition to the [board API](#board), the [board component](/components/board/) supports the following methods for interfacing with [ADCs](/components/board/#analogs) on a board:
{{< readfile "/static/include/components/apis/analogreader.md" >}}
### Digital Interrupts
-In addition to the [board API](#board), the [board component](/build/configure/components/board/) supports the following methods for interfacing with [digital interrupts](/build/configure/components/board/#digital_interrupts) on a board:
+In addition to the [board API](#board), the [board component](/components/board/) supports the following methods for interfacing with [digital interrupts](/components/board/#digital_interrupts) on a board:
{{< readfile "/static/include/components/apis/digitalinterrupt.md" >}}
diff --git a/docs/build/program/apis/data-client.md b/docs/build/program/apis/data-client.md
index c341044947..bef37631ec 100644
--- a/docs/build/program/apis/data-client.md
+++ b/docs/build/program/apis/data-client.md
@@ -594,7 +594,7 @@ For more information, see the [Python SDK Docs](https://python.viam.dev/autoapi/
### TabularDataCaptureUpload
-Upload tabular data collected on your machine through a specific [component](/build/configure/components/) to the [Viam app](https://app.viam.com).
+Upload tabular data collected on your machine through a specific [component](/components/) to the [Viam app](https://app.viam.com).
Uploaded tabular data can be found under the **Sensors** subtab of the app's [**Data** tab](https://app.viam.com/data).
{{< tabs >}}
diff --git a/docs/build/program/apis/sessions.md b/docs/build/program/apis/sessions.md
index 7684820f6d..419ebb6d46 100644
--- a/docs/build/program/apis/sessions.md
+++ b/docs/build/program/apis/sessions.md
@@ -26,7 +26,7 @@ The period of time during which a client is connected to a robot is called a _se
_Session management_ is a safety precaution that allows you to manage the clients that are authenticated and communicating with a robot's `viam-server` instance.
The default session management configuration checks for presence to ensures that a robot only moves when a client is actively connected and stops any components that remain running when a client disconnects.
This is especially important for robots that physically move.
-For example, imagine a wheeled rover gets a [`SetPower()`](/build/configure/components/base/#setpower) command as the last input from a client before the connection to the robot is interrupted.
+For example, imagine a wheeled rover gets a [`SetPower()`](/components/base/#setpower) command as the last input from a client before the connection to the robot is interrupted.
Without session management, the API request from the client would cause the rover's motors to move, causing the robot to continue driving forever and potentially colliding with objects and people.
For more information, see [Client Sessions and Robot Network Connectivity](/build/program/connectivity/).
diff --git a/docs/build/program/debug.md b/docs/build/program/debug.md
index b3774d77b9..8266afba7f 100644
--- a/docs/build/program/debug.md
+++ b/docs/build/program/debug.md
@@ -4,7 +4,7 @@ linkTitle: "Debug"
weight: 60
type: "docs"
description: "Read and filter logs to fix issues while programming with Viam's SDKs."
-images: ["/build/configure/services/icons/sdk.svg"]
+images: ["/services/icons/sdk.svg"]
tags: ["client", "sdk", "logs", "debug", "robot", "viam-server"]
aliases:
- /program/debug/
diff --git a/docs/build/program/python-venv.md b/docs/build/program/python-venv.md
index ed1803434d..dde3d92442 100644
--- a/docs/build/program/python-venv.md
+++ b/docs/build/program/python-venv.md
@@ -4,7 +4,7 @@ linkTitle: "Virtualenv for Python SDK"
weight: 10
type: "docs"
description: "Prepare your Python Virtual Environment to program machines with the Python SDK."
-images: ["/build/configure/services/icons/sdk.svg"]
+images: ["/services/icons/sdk.svg"]
tags:
["client", "sdk", "application", "sdk", "fleet", "program", "python", "venv"]
aliases:
diff --git a/docs/build/program/run.md b/docs/build/program/run.md
index 80e1a70ad6..9a1f5dd1dd 100644
--- a/docs/build/program/run.md
+++ b/docs/build/program/run.md
@@ -4,7 +4,7 @@ linkTitle: "Run Code"
weight: 50
type: "docs"
description: "Execute the logic you've written to control your robot or fleet."
-images: ["/build/configure/services/icons/sdk.svg"]
+images: ["/services/icons/sdk.svg"]
tags: ["client", "sdk", "application", "sdk", "fleet", "program"]
aliases:
- /program/run/
diff --git a/docs/build/program/use-extra-params.md b/docs/build/program/use-extra-params.md
index 9de726fcd8..d85ef0edbc 100644
--- a/docs/build/program/use-extra-params.md
+++ b/docs/build/program/use-extra-params.md
@@ -4,7 +4,7 @@ linkTitle: "Extra Params"
weight: 70
type: "docs"
description: "Using the extra parameter on resource API methods with Viam's SDKs."
-images: ["/build/configure/services/icons/sdk.svg"]
+images: ["/services/icons/sdk.svg"]
tags: ["sdk", "extra", "extend"]
aliases:
- /program/sdks/use-extra-params
@@ -17,10 +17,10 @@ How to [utilize](#utilize) and [define](#define) the `extra` parameters that man
You can use `extra` parameters with modular {{< glossary_tooltip term_id="resource" text="resource" >}} implementations that are _models_ of built-in resource types.
-For example, a new model of [sensor](/build/configure/components/sensor/), or a new model of {{< glossary_tooltip term_id="slam" text="SLAM" >}} service.
+For example, a new model of [sensor](/components/sensor/), or a new model of {{< glossary_tooltip term_id="slam" text="SLAM" >}} service.
The `extra` parameters in that built-in resource type's [API](/build/program/apis/) allow users to pass information to a resource's driver that isn't specified as a parameter for all models of the resource type.
-This is necessary to keep the API of resource types consistent across, for example, all models of [motor](/build/configure/components/motor/) or all models of [camera](/build/configure/components/camera/).
+This is necessary to keep the API of resource types consistent across, for example, all models of [motor](/components/motor/) or all models of [camera](/components/camera/).
Send extra information in an API call in `extra` parameters as follows:
@@ -94,7 +94,7 @@ If `extra` information must be passed to a resource, it is handled within a new,
To do this, define a custom implementation of the resource's API as a new _model_, and modify the resource's API methods to handle the `extra` information you send.
Follow the steps in the [Modular Resources documentation](/registry/create/) to do so.
-For an example of how to check the values of keys in an `extra` parameter of a built-in resource [API method](/build/program/apis/), reference this modification to the built-in [sensor](/build/configure/components/sensor/) resource type's [Readings](/build/configure/components/sensor/#getreadings) method in the code of a [new sensor model](/registry/):
+For an example of how to check the values of keys in an `extra` parameter of a built-in resource [API method](/build/program/apis/), reference this modification to the built-in [sensor](/components/sensor/) resource type's [Readings](/components/sensor/#getreadings) method in the code of a [new sensor model](/registry/):
{{< tabs >}}
{{% tab name="Python" %}}
diff --git a/docs/build/configure/components/_index.md b/docs/components/_index.md
similarity index 97%
rename from docs/build/configure/components/_index.md
rename to docs/components/_index.md
index d26631ecbb..43114861a8 100644
--- a/docs/build/configure/components/_index.md
+++ b/docs/components/_index.md
@@ -1,7 +1,7 @@
---
title: "Components"
linkTitle: "Components"
-weight: 20
+weight: 500
simple_list: true
type: docs
description: "In-depth information on the various components available within the Viam system."
diff --git a/docs/build/configure/components/arm/_index.md b/docs/components/arm/_index.md
similarity index 100%
rename from docs/build/configure/components/arm/_index.md
rename to docs/components/arm/_index.md
diff --git a/docs/build/configure/components/arm/eva.md b/docs/components/arm/eva.md
similarity index 100%
rename from docs/build/configure/components/arm/eva.md
rename to docs/components/arm/eva.md
diff --git a/docs/build/configure/components/arm/fake.md b/docs/components/arm/fake.md
similarity index 97%
rename from docs/build/configure/components/arm/fake.md
rename to docs/components/arm/fake.md
index 12157fe7fd..8f66805946 100644
--- a/docs/build/configure/components/arm/fake.md
+++ b/docs/components/arm/fake.md
@@ -21,7 +21,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `arm` type, then select the `fake` model.
Enter a name for your arm and click **Create**.
-![An example configuration for a fake ur5e arm in the Viam app Config Builder.](/build/configure/components/arm/fake-arm-ui-config.png)
+![An example configuration for a fake ur5e arm in the Viam app Config Builder.](/components/arm/fake-arm-ui-config.png)
Copy and paste the following attribute template into your arm's **Attributes** box.
Then remove and fill in the attributes as applicable to your arm, according to the table below.
diff --git a/docs/build/configure/components/arm/ur5e.md b/docs/components/arm/ur5e.md
similarity index 96%
rename from docs/build/configure/components/arm/ur5e.md
rename to docs/components/arm/ur5e.md
index b8fa6847be..13cf169511 100644
--- a/docs/build/configure/components/arm/ur5e.md
+++ b/docs/components/arm/ur5e.md
@@ -20,7 +20,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `arm` type, then select the `ur5e` model.
Enter a name for your arm and click **Create**.
-![Web UI configuration panel for an arm of model ur5e in the Viam app, with Attributes & Depends On dropdowns and the option to add a frame.](/build/configure/components/arm/ur5e-ui-config.png)
+![Web UI configuration panel for an arm of model ur5e in the Viam app, with Attributes & Depends On dropdowns and the option to add a frame.](/components/arm/ur5e-ui-config.png)
Edit and fill in the attributes as applicable.
diff --git a/docs/build/configure/components/arm/xarm6.md b/docs/components/arm/xarm6.md
similarity index 97%
rename from docs/build/configure/components/arm/xarm6.md
rename to docs/components/arm/xarm6.md
index 15daf098e2..59be5df229 100644
--- a/docs/build/configure/components/arm/xarm6.md
+++ b/docs/components/arm/xarm6.md
@@ -21,7 +21,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `arm` type, then select the `xArm6` model.
Enter a name for your arm and click **Create**.
-![Web UI configuration panel for an arm of model xArm6 in the Viam app, with Attributes & Depends On dropdowns and the option to add a frame.](/build/configure/components/arm/xArm6-ui-config.png)
+![Web UI configuration panel for an arm of model xArm6 in the Viam app, with Attributes & Depends On dropdowns and the option to add a frame.](/components/arm/xArm6-ui-config.png)
Edit and fill in the attributes as applicable.
diff --git a/docs/build/configure/components/arm/xarm7.md b/docs/components/arm/xarm7.md
similarity index 97%
rename from docs/build/configure/components/arm/xarm7.md
rename to docs/components/arm/xarm7.md
index d68cfd55a2..5820f2cf92 100644
--- a/docs/build/configure/components/arm/xarm7.md
+++ b/docs/components/arm/xarm7.md
@@ -21,7 +21,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `arm` type, then select the `xArm7` model.
Enter a name for your arm and click **Create**.
-![Web UI configuration panel for an arm of model xArm6 in the Viam app, with Attributes & Depends On dropdowns and the option to add a frame.](/build/configure/components/arm/xArm7-ui-config.png)
+![Web UI configuration panel for an arm of model xArm6 in the Viam app, with Attributes & Depends On dropdowns and the option to add a frame.](/components/arm/xArm7-ui-config.png)
Edit and fill in the attributes as applicable.
diff --git a/docs/build/configure/components/arm/xarmlite.md b/docs/components/arm/xarmlite.md
similarity index 97%
rename from docs/build/configure/components/arm/xarmlite.md
rename to docs/components/arm/xarmlite.md
index e468256201..1fe75baaa9 100644
--- a/docs/build/configure/components/arm/xarmlite.md
+++ b/docs/components/arm/xarmlite.md
@@ -20,7 +20,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `arm` type, then select the `xArmLite` model.
Enter a name for your arm and click **Create**.
-![Web UI configuration panel for an arm of model xArmLite in the Viam app, with Attributes & Depends On dropdowns and the option to add a frame.](/build/configure/components/arm/xArmLite-ui-config.png)
+![Web UI configuration panel for an arm of model xArmLite in the Viam app, with Attributes & Depends On dropdowns and the option to add a frame.](/components/arm/xArmLite-ui-config.png)
Copy and paste the following attribute template into your arm's **Attributes** box.
Then remove and fill in the attributes as applicable to your arm, according to the table below.
diff --git a/docs/build/configure/components/arm/yahboom-dofbot.md b/docs/components/arm/yahboom-dofbot.md
similarity index 95%
rename from docs/build/configure/components/arm/yahboom-dofbot.md
rename to docs/components/arm/yahboom-dofbot.md
index 2fe354b3a3..4912f8e806 100644
--- a/docs/build/configure/components/arm/yahboom-dofbot.md
+++ b/docs/components/arm/yahboom-dofbot.md
@@ -26,7 +26,7 @@ Enter a name for your arm and click **Create**.
There are no attributes available for this modular arm.
-![Web UI configuration panel for an arm of model yahboom-dofbot in the Viam app, with Attributes & Depends On dropdowns and the option to add a frame.](/build/configure/components/arm/yahboom-dofbot-ui-config.png)
+![Web UI configuration panel for an arm of model yahboom-dofbot in the Viam app, with Attributes & Depends On dropdowns and the option to add a frame.](/components/arm/yahboom-dofbot-ui-config.png)
Edit and fill in the attributes as applicable.
diff --git a/docs/build/configure/components/base/_index.md b/docs/components/base/_index.md
similarity index 99%
rename from docs/build/configure/components/base/_index.md
rename to docs/components/base/_index.md
index 5607d4f3cc..e5b36fc152 100644
--- a/docs/build/configure/components/base/_index.md
+++ b/docs/components/base/_index.md
@@ -18,13 +18,13 @@ A base is the platform that the other parts of a mobile robot attach to.
By configuring a base component, organizing individual components to produce coordinated movement, you gain an interface to control the movement of the whole physical base of the robot without needing to send separate commands to individual motors.
-![A robot comprised of a wheeled base (motors, wheels and chassis) as well as some other components. The wheels are highlighted to indicate that they are part of the concept of a 'base', while the non-base components are not highlighted. The width and circumference are required attributes when configuring a base component.](/build/configure/components/base/base-trk-rover-w-arm.png)
+![A robot comprised of a wheeled base (motors, wheels and chassis) as well as some other components. The wheels are highlighted to indicate that they are part of the concept of a 'base', while the non-base components are not highlighted. The width and circumference are required attributes when configuring a base component.](/components/base/base-trk-rover-w-arm.png)
Most mobile robots with a base need at least the following hardware:
-- A [board](/build/configure/components/board/).
+- A [board](/components/board/).
- Some sort of actuators to move the base.
- Usually [motors](/build/configure/components/motor/) attached to wheels or propellers.
+ Usually [motors](/components/motor/) attached to wheels or propellers.
- A power supply for the board.
- A power supply for the actuators.
- Some sort of chassis to hold everything together.
diff --git a/docs/build/configure/components/base/boat.md b/docs/components/base/boat.md
similarity index 86%
rename from docs/build/configure/components/base/boat.md
rename to docs/components/base/boat.md
index bfb5ccd1ef..853c8b17a1 100644
--- a/docs/build/configure/components/base/boat.md
+++ b/docs/components/base/boat.md
@@ -13,7 +13,7 @@ aliases:
---
A `boat` base is a model for a mobile robotic boat.
-To configure a `boat` base as a component of your robot, first configure the [board](/build/configure/components/board/) controlling the base and any [motors](/build/configure/components/motor/) attached to the base.
+To configure a `boat` base as a component of your robot, first configure the [board](/components/board/) controlling the base and any [motors](/components/motor/) attached to the base.
{{< tabs name="Configure a Boat Base" >}}
{{% tab name="Config Builder" %}}
@@ -55,10 +55,10 @@ The following attributes are available for `boat` bases:
| ---- | ---- | --------- | ----------- |
| `length_mm` | int | **Required** | Length of the base in millimeters. In other words, the distance between the approximate centers of the right and left wheels. Can be an approximation. |
| `width_mm` | int | **Required** | Width of the base in millimeters. In other words, the distance between the approximate centers of the right and left motors. Can be an approximation. |
-| `IMU` | string | **Required** | Name of the [Inertial Measurement Unit](/build/configure/components/movement-sensor/#imu-configuration) in the boat. |
+| `IMU` | string | **Required** | Name of the [Inertial Measurement Unit](/components/movement-sensor/#imu-configuration) in the boat. |
| `Motors` | string[] | **Required** | JSON struct containing the configuration attributes for each motor attached to the boat. |
-Each [motor](/build/configure/components/motor/) inside of `Motors` has the following attributes available:
+Each [motor](/components/motor/) inside of `Motors` has the following attributes available:
| Name | Type | Inclusion | Description |
diff --git a/docs/build/configure/components/base/fake.md b/docs/components/base/fake.md
similarity index 95%
rename from docs/build/configure/components/base/fake.md
rename to docs/components/base/fake.md
index c8b8179ff6..e698ee24e2 100644
--- a/docs/build/configure/components/base/fake.md
+++ b/docs/components/base/fake.md
@@ -23,7 +23,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `base` type, then select the `fake` model.
Enter a name for your base and click **Create**.
-![An example configuration for a fake base in the Viam app Config Builder.](/build/configure/components/base/fake-base-ui-config.png)
+![An example configuration for a fake base in the Viam app Config Builder.](/components/base/fake-base-ui-config.png)
{{% /tab %}}
{{% tab name="JSON Template" %}}
diff --git a/docs/build/configure/components/base/wheeled.md b/docs/components/base/wheeled.md
similarity index 85%
rename from docs/build/configure/components/base/wheeled.md
rename to docs/components/base/wheeled.md
index e45416d262..c9dc8e8781 100644
--- a/docs/build/configure/components/base/wheeled.md
+++ b/docs/components/base/wheeled.md
@@ -12,7 +12,7 @@ aliases:
---
A `wheeled` base supports mobile robotic bases with drive motors on both sides (differential steering).
-To configure a `wheeled` base as a component of your robot, first configure the [board](/build/configure/components/board/) controlling the base and any [motors](/build/configure/components/motor/) attached to the base.
+To configure a `wheeled` base as a component of your robot, first configure the [board](/components/board/) controlling the base and any [motors](/components/motor/) attached to the base.
Configure a `wheeled` base as follows:
@@ -24,7 +24,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `base` type, then select the `wheeled` model.
Enter a name for your arm and click **Create**.
-{{< imgproc src="/build/configure/components/base/wheeled-base-ui-config.png" alt="An example configuration for a wheeled base in the Viam app config builder, with Attributes & Depends On dropdowns and the option to add a frame." resize="600x" >}}
+{{< imgproc src="/components/base/wheeled-base-ui-config.png" alt="An example configuration for a wheeled base in the Viam app config builder, with Attributes & Depends On dropdowns and the option to add a frame." resize="600x" >}}
Select the motors attached to the base as your **Right Motors** and **Left Motors**.
Edit and fill in the attributes as applicable.
@@ -127,7 +127,7 @@ Edit and fill in the attributes as applicable.
{{% /tab %}}
{{% tab name="Annotated JSON" %}}
-{{< imgproc src="/build/configure/components/base/base-json.png" alt="JSON configuration file for a wheeled base with annotations explaining some of the attributes." resize="600x" >}}
+{{< imgproc src="/components/base/base-json.png" alt="JSON configuration file for a wheeled base with annotations explaining some of the attributes." resize="600x" >}}
{{% /tab %}}
{{< /tabs >}}
@@ -147,7 +147,7 @@ The following attributes are available for `wheeled` bases:
An example wiring diagram for a base with one motor on each side:
-![Wiring diagram showing a Raspberry Pi, motor drivers, motors, power supply, and voltage regulator for the rover](/build/configure/components/base/base-wiring-diagram.png)
+![Wiring diagram showing a Raspberry Pi, motor drivers, motors, power supply, and voltage regulator for the rover](/components/base/base-wiring-diagram.png)
Note that your base's wiring will vary depending on your choice of board, motors, motor drivers, and power supply.
diff --git a/docs/build/configure/components/board/_index.md b/docs/components/board/_index.md
similarity index 98%
rename from docs/build/configure/components/board/_index.md
rename to docs/components/board/_index.md
index 8006afcb16..5ea6767056 100644
--- a/docs/build/configure/components/board/_index.md
+++ b/docs/components/board/_index.md
@@ -15,7 +15,7 @@ aliases:
# SMEs: Gautham, Rand
---
-A _board_ component on your robot communicates with the other [components](/build/configure/components/) of the robot.
+A _board_ component on your robot communicates with the other [components](/components/) of the robot.
A board can be:
@@ -27,7 +27,7 @@ The board of a robot is also its signal wire hub that provides access to general
Signaling is overseen by a computer running `viam-server` which allows you to control the flow of electricity to these pins to change their state between "high" (active) and "low" (inactive), and wire them to send [digital signals](https://en.wikipedia.org/wiki/Digital_signal) to and from other hardware.
-{{% figure src="/build/configure/components/board/board-comp-options.png" alt="Image showing two board options: First, running viam-server locally and second, running via a peripheral plugged into the USB port of a computer that is running the viam-server." title="Two different board options: a single-board computer with GPIO pins running `viam-server` locally, or a GPIO peripheral plugged into a desktop computer's USB port, with the computer running `viam-server`." %}}
+{{% figure src="/components/board/board-comp-options.png" alt="Image showing two board options: First, running viam-server locally and second, running via a peripheral plugged into the USB port of a computer that is running the viam-server." title="Two different board options: a single-board computer with GPIO pins running `viam-server` locally, or a GPIO peripheral plugged into a desktop computer's USB port, with the computer running `viam-server`." %}}
## Related Services
@@ -55,7 +55,7 @@ For configuration information, click on the model name:
| [`ti`](ti/) | [Texas Instruments TDA4VM](https://devices.amazonaws.com/detail/a3G8a00000E2QErEAN/TI-TDA4VM-Starter-Kit-for-Edge-AI-vision-systems) |
| [`beaglebone`](beaglebone/) | [BeagleBoard's BeagleBone AI-64](https://www.beagleboard.org/boards/beaglebone-ai-64) |
| [`numato`](numato/) | [Numato GPIO Modules](https://numato.com/product-category/automation/gpio-modules/), peripherals for adding GPIO pins |
-| [`pca9685`](pca9685/) | [PCA9685 Arduino I2C Interface](https://www.adafruit.com/product/815), a 16-channel [I2C](#i2cs) [PWM](https://docs.arduino.cc/learn/microcontrollers/analog-output)/[servo](/build/configure/components/servo/) driver peripheral |
+| [`pca9685`](pca9685/) | [PCA9685 Arduino I2C Interface](https://www.adafruit.com/product/815), a 16-channel [I2C](#i2cs) [PWM](https://docs.arduino.cc/learn/microcontrollers/analog-output)/[servo](/components/servo/) driver peripheral |
| [`customlinux`](customlinux/) | A model for other Linux boards. |
| [`fake`](fake/) | A model used for testing, with no physical hardware |
@@ -173,7 +173,7 @@ reader = await my_board.analog_reader_by_name(name="my_example_analog_reader")
**Parameters:**
-- `name` [(str)](https://docs.python.org/3/library/stdtypes.html#text-sequence-type-str): Name of the analog reader you want to retrieve. Set as the `"name"` property [in configuration](/build/configure/components/board/#digital_interrupts).
+- `name` [(str)](https://docs.python.org/3/library/stdtypes.html#text-sequence-type-str): Name of the analog reader you want to retrieve. Set as the `"name"` property [in configuration](/components/board/#digital_interrupts).
**Returns:**
@@ -201,7 +201,7 @@ Get an [`DigitalInterrupt`](#digital_interrupts) by `name`.
**Parameters:**
-- `name` [(str)](https://docs.python.org/3/library/stdtypes.html#text-sequence-type-str): Name of the digital interrupt you want to retrieve. Set as the `"name"` property [in configuration](/build/configure/components/board/#digital_interrupts).
+- `name` [(str)](https://docs.python.org/3/library/stdtypes.html#text-sequence-type-str): Name of the digital interrupt you want to retrieve. Set as the `"name"` property [in configuration](/components/board/#digital_interrupts).
**Returns:**
@@ -222,7 +222,7 @@ interrupt = await my_board.digital_interrupt_by_name(
**Parameters:**
-- `name` [(string)](https://pkg.go.dev/builtin#string): Name of the digital interrupt you want to retrieve. Set as the `"name"` property [in configuration](/build/configure/components/board/#digital_interrupts).
+- `name` [(string)](https://pkg.go.dev/builtin#string): Name of the digital interrupt you want to retrieve. Set as the `"name"` property [in configuration](/components/board/#digital_interrupts).
**Returns:**
@@ -882,7 +882,7 @@ high := pin.Get(context.Background(), nil)
{{% alert title="Info" color="info" %}}
[Pulse-width modulation (PWM)](https://www.digikey.com/en/blog/pulse-width-modulation) is a method where of transmitting a digital signal in the form of pulses to control analog circuits.
-With PWM on a _board_, the continuous digital signal output by a GPIO pin is sampled at regular intervals and transmitted to any [hardware components](/build/configure/components/) wired to the pin that read analog signals.
+With PWM on a _board_, the continuous digital signal output by a GPIO pin is sampled at regular intervals and transmitted to any [hardware components](/components/) wired to the pin that read analog signals.
This enables the board to communicate with these components.
{{% /alert %}}
@@ -1003,7 +1003,7 @@ err := pin.SetPWM(context.Background(), .6, nil)
### PWMFreq
Get the [Pulse-width modulation (PWM) frequency](https://learn.adafruit.com/improve-brushed-dc-motor-performance/pwm-frequency) in Hertz (Hz) of this pin, the count of PWM interval periods per second.
-The optimal value for PWM Frequency depends on the type and model of [component](/build/configure/components/) you control with the signal output by this pin.
+The optimal value for PWM Frequency depends on the type and model of [component](/components/) you control with the signal output by this pin.
Refer to your device's data sheet for PWM Frequency specifications.
{{< tabs >}}
@@ -1061,7 +1061,7 @@ freqHz, err := pin.PWMFreq(context.Background(), nil)
### SetPWMFreq
Set the [Pulse-width modulation (PWM) frequency](https://learn.adafruit.com/improve-brushed-dc-motor-performance/pwm-frequency) in Hertz (Hz) of this pin, the count of PWM interval periods per second.
-The optimal value for PWM Frequency depends on the type and model of [component](/build/configure/components/) you control with the PWM signal output by this pin.
+The optimal value for PWM Frequency depends on the type and model of [component](/components/) you control with the PWM signal output by this pin.
Refer to your device's data sheet for PWM Frequency specifications.
{{< tabs >}}
diff --git a/docs/build/configure/components/board/beaglebone.md b/docs/components/board/beaglebone.md
similarity index 97%
rename from docs/build/configure/components/board/beaglebone.md
rename to docs/components/board/beaglebone.md
index 65d4f6b99a..2a97145bc6 100644
--- a/docs/build/configure/components/board/beaglebone.md
+++ b/docs/components/board/beaglebone.md
@@ -27,7 +27,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `board` type, then select the `beaglebone` model.
Enter a name for your board and click **Create**.
-![An example configuration for a beaglebone board in the Viam app Config Builder.](/build/configure/components/board/beaglebone-ui-config.png)
+![An example configuration for a beaglebone board in the Viam app Config Builder.](/components/board/beaglebone-ui-config.png)
{{< readfile "/static/include/components/board-attr-config.md" >}}
diff --git a/docs/build/configure/components/board/customlinux.md b/docs/components/board/customlinux.md
similarity index 98%
rename from docs/build/configure/components/board/customlinux.md
rename to docs/components/board/customlinux.md
index 60307d180e..f838ca7022 100644
--- a/docs/build/configure/components/board/customlinux.md
+++ b/docs/components/board/customlinux.md
@@ -344,7 +344,7 @@ Uploading your definitions file allows you to store it centrally on the Viam app
For example:
-- The following command uploads a board definitions file named `my-board-def-file.json` that contains pin mappings for a configured [board](/build/configure/components/board/) named `my-board`:
+- The following command uploads a board definitions file named `my-board-def-file.json` that contains pin mappings for a configured [board](/components/board/) named `my-board`:
```sh {id="terminal-prompt" class="command-line" data-prompt="$"}
viam board upload --name='my-board' --organization='abcdef12-abcd-abcd-abcd-abcdef123456' --version=1.0.0 my-board-def-file.json
@@ -368,7 +368,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `board` type, then select the `customlinux` model.
Enter a name for your `customlinux` board and click **Create**.
-![An example configuration for a customlinux board in the Viam app Config Builder.](/build/configure/components/board/customlinux-ui-config.png)
+![An example configuration for a customlinux board in the Viam app Config Builder.](/components/board/customlinux-ui-config.png)
Copy and paste the following attribute template into your board's **Attributes** box.
Then edit the file path to use your [board definitions file](#create-a-board-definitions-file).
diff --git a/docs/build/configure/components/board/fake.md b/docs/components/board/fake.md
similarity index 97%
rename from docs/build/configure/components/board/fake.md
rename to docs/components/board/fake.md
index 209f100551..e8fe65cbbf 100644
--- a/docs/build/configure/components/board/fake.md
+++ b/docs/components/board/fake.md
@@ -21,7 +21,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `board` type, then select the `fake` model.
Enter a name for your board and click **Create**.
-![An example configuration for a fake board in the Viam app Config Builder.](/build/configure/components/board/fake-ui-config.png)
+![An example configuration for a fake board in the Viam app Config Builder.](/components/board/fake-ui-config.png)
Copy and paste the following attribute template into your board's **Attributes** box.
Then remove and fill in the attributes as applicable to your board, according to the table below.
diff --git a/docs/build/configure/components/board/jetson.md b/docs/components/board/jetson.md
similarity index 98%
rename from docs/build/configure/components/board/jetson.md
rename to docs/components/board/jetson.md
index 425b28a017..90e97d0d2c 100644
--- a/docs/build/configure/components/board/jetson.md
+++ b/docs/components/board/jetson.md
@@ -35,7 +35,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `board` type, then select the `jetson` model.
Enter a name for your board and click **Create**.
-![An example configuration for a jetson board in the Viam app Config Builder.](/build/configure/components/board/jetson-ui-config.png)
+![An example configuration for a jetson board in the Viam app Config Builder.](/components/board/jetson-ui-config.png)
{{< readfile "/static/include/components/board-attr-config.md" >}}
diff --git a/docs/build/configure/components/board/numato.md b/docs/components/board/numato.md
similarity index 97%
rename from docs/build/configure/components/board/numato.md
rename to docs/components/board/numato.md
index 255c12bd19..bfe4d3b1e1 100644
--- a/docs/build/configure/components/board/numato.md
+++ b/docs/components/board/numato.md
@@ -23,7 +23,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `board` type, then select the `numato` model.
Enter a name for your board and click **Create**.
-![An example configuration for a numato board in the Viam app Config Builder.](/build/configure/components/board/numato-ui-config.png)
+![An example configuration for a numato board in the Viam app Config Builder.](/components/board/numato-ui-config.png)
Copy and paste the following attribute template into your board's **Attributes** box.
Then remove and fill in the attributes as applicable to your board, according to the table below.
diff --git a/docs/build/configure/components/board/pca9685.md b/docs/components/board/pca9685.md
similarity index 96%
rename from docs/build/configure/components/board/pca9685.md
rename to docs/components/board/pca9685.md
index 9d58e78d88..f925f08183 100644
--- a/docs/build/configure/components/board/pca9685.md
+++ b/docs/components/board/pca9685.md
@@ -21,7 +21,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `board` type, then select the `pca9685` model.
Enter a name for your board and click **Create**.
-![An example configuration for a pca9685 board in the Viam app Config Builder.](/build/configure/components/board/pca9685-ui-config.png)
+![An example configuration for a pca9685 board in the Viam app Config Builder.](/components/board/pca9685-ui-config.png)
Copy and paste the following attribute template into your board's **Attributes** box.
Then remove and fill in the attributes as applicable to your board, according to the table below.
diff --git a/docs/build/configure/components/board/pi.md b/docs/components/board/pi.md
similarity index 100%
rename from docs/build/configure/components/board/pi.md
rename to docs/components/board/pi.md
diff --git a/docs/build/configure/components/board/ti.md b/docs/components/board/ti.md
similarity index 97%
rename from docs/build/configure/components/board/ti.md
rename to docs/components/board/ti.md
index 5c02997412..a6b5866f49 100644
--- a/docs/build/configure/components/board/ti.md
+++ b/docs/components/board/ti.md
@@ -27,7 +27,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `board` type, then select the `ti` model.
Enter a name for your board and click **Create**.
-![An example configuration for a ti board in the Viam app Config Builder.](/build/configure/components/board/ti-ui-config.png)
+![An example configuration for a ti board in the Viam app Config Builder.](/components/board/ti-ui-config.png)
{{< readfile "/static/include/components/board-attr-config.md" >}}
diff --git a/docs/build/configure/components/board/upboard.md b/docs/components/board/upboard.md
similarity index 95%
rename from docs/build/configure/components/board/upboard.md
rename to docs/components/board/upboard.md
index 53e6d573b5..d1220dd27f 100644
--- a/docs/build/configure/components/board/upboard.md
+++ b/docs/components/board/upboard.md
@@ -23,7 +23,7 @@ You must flash your Intel-based board with:
For example, `ubuntu-22.04.2-live-server-amd64.iso`.
Follow [these instructions](https://ubuntu.com/tutorials/install-ubuntu-server) to install Ubuntu Server.
2. The [pin control driver](https://github.com/up-division/pinctrl-upboard).
- This driver is necessary to stabilize the [GPIO pin mapping definition](https://github.com/up-board/up-community/wiki/Pinout) on the board, making the pin mapping identical to that of a [Raspberry Pi](/build/configure/components/board/pi/).
+ This driver is necessary to stabilize the [GPIO pin mapping definition](https://github.com/up-board/up-community/wiki/Pinout) on the board, making the pin mapping identical to that of a [Raspberry Pi](/components/board/pi/).
Follow [these instructions](https://github.com/up-division/pinctrl-upboard) to install the pin control driver.
{{< tabs name="Configure an upboard Board" >}}
@@ -34,7 +34,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `board` type, then select the `upboard` model.
Enter a name for your board and click **Create**.
-![An example configuration for a upboard board in the Viam app Config Builder.](/build/configure/components/board/upboard-ui-config.png)
+![An example configuration for a upboard board in the Viam app Config Builder.](/components/board/upboard-ui-config.png)
Copy and paste the following attribute template into your board's **Attributes** box.
Then remove and fill in the attributes as applicable to your board, according to the table below.
@@ -140,7 +140,7 @@ The following attributes are available for `upboard` boards:
| Name | Type | Inclusion | Description |
| ---- | ---- | --------- | ----------- |
-| `digital_interrupts` | object | Optional | Any digital interrupts's {{< glossary_tooltip term_id="pin-number" text="pin number" >}} and name. See [configuration info](/build/configure/components/board/#digital_interrupts). |
+| `digital_interrupts` | object | Optional | Any digital interrupts's {{< glossary_tooltip term_id="pin-number" text="pin number" >}} and name. See [configuration info](/components/board/#digital_interrupts). |
| `i2cs` | object | Optional | Any Inter-Integrated Circuit (I2C) pins' bus index and name. See [configuration info](#i2cs). |
## Attribute Configuration
diff --git a/docs/build/configure/components/camera/_index.md b/docs/components/camera/_index.md
similarity index 100%
rename from docs/build/configure/components/camera/_index.md
rename to docs/components/camera/_index.md
diff --git a/docs/build/configure/components/camera/align-color-depth-extrinsics.md b/docs/components/camera/align-color-depth-extrinsics.md
similarity index 98%
rename from docs/build/configure/components/camera/align-color-depth-extrinsics.md
rename to docs/components/camera/align-color-depth-extrinsics.md
index c31505c895..8550c07736 100644
--- a/docs/build/configure/components/camera/align-color-depth-extrinsics.md
+++ b/docs/components/camera/align-color-depth-extrinsics.md
@@ -21,7 +21,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `camera` type, then select the `align_color_depth_extrinsics` model.
Enter a name for your camera and click **Create**.
-![Configuration of an align color depth extrinsics view in the Viam app config builder.](/build/configure/components/camera/configure-align-color-depth-extrinsics.png)
+![Configuration of an align color depth extrinsics view in the Viam app config builder.](/components/camera/configure-align-color-depth-extrinsics.png)
Copy and paste the following attribute template into your camera's **Attributes** box.
Then remove and fill in the attributes as applicable to your camera, according to the table below.
diff --git a/docs/build/configure/components/camera/align-color-depth-homography.md b/docs/components/camera/align-color-depth-homography.md
similarity index 98%
rename from docs/build/configure/components/camera/align-color-depth-homography.md
rename to docs/components/camera/align-color-depth-homography.md
index 317777d0b2..5b970a62c1 100644
--- a/docs/build/configure/components/camera/align-color-depth-homography.md
+++ b/docs/components/camera/align-color-depth-homography.md
@@ -21,7 +21,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `camera` type, then select the `align_color_depth_homography` model.
Enter a name for your camera and click **Create**.
-![Configuration of an align color depth homography view in the Viam app config builder.](/build/configure/components/camera/configure-align-color-depth-homography.png)
+![Configuration of an align color depth homography view in the Viam app config builder.](/components/camera/configure-align-color-depth-homography.png)
Copy and paste the following attribute template into your camera's **Attributes** box.
Then remove and fill in the attributes as applicable to your camera, according to the table below.
diff --git a/docs/build/configure/components/camera/calibrate.md b/docs/components/camera/calibrate.md
similarity index 91%
rename from docs/build/configure/components/camera/calibrate.md
rename to docs/components/camera/calibrate.md
index a836b41507..a397642ecd 100644
--- a/docs/build/configure/components/camera/calibrate.md
+++ b/docs/components/camera/calibrate.md
@@ -38,7 +38,7 @@ pip3 install opencv-python
{{< /alert >}}
Example of good images:
- ![Example of good images](/build/configure/components/camera/calibrate/example-images.png)
+ ![Example of good images](/components/camera/calibrate/example-images.png)
3. Save [`cameraCalib.py`](https://github.com/viam-labs/camera-calibration/blob/main/cameraCalib.py)
4. Run `python3 cameraCalib.py YOUR_PICTURES_DIRECTORY`.
@@ -65,7 +65,7 @@ pip3 install opencv-python
5. Copy the output which contains the `intrinsic_parameters` and `distortion_parameters` into the Raw JSON config on your robot's **Config** tab.
-{{}}
+{{}}
The following is a full example config:
@@ -109,7 +109,7 @@ The following is a full example config:
## Next Steps
{{< cards >}}
-{{% card link="/build/configure/components/camera/transform" %}}
+{{% card link="/components/camera/transform/" %}}
{{% card link="/ml/vision" %}}
{{% card link="/tutorials/services/try-viam-color-detection" %}}
{{< /cards >}}
diff --git a/docs/build/configure/components/camera/dual-stream.md b/docs/components/camera/dual-stream.md
similarity index 98%
rename from docs/build/configure/components/camera/dual-stream.md
rename to docs/components/camera/dual-stream.md
index 9e4b8e83fc..3cdaff7025 100644
--- a/docs/build/configure/components/camera/dual-stream.md
+++ b/docs/components/camera/dual-stream.md
@@ -22,7 +22,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `camera` type, then select the `dual_stream` model.
Enter a name for your camera and click **Create**.
-![Configuration of a dual stream camera in the Viam app config builder.](/build/configure/components/camera/configure-dual-stream.png)
+![Configuration of a dual stream camera in the Viam app config builder.](/components/camera/configure-dual-stream.png)
Copy and paste the following attribute template into your camera's **Attributes** box.
Then remove and fill in the attributes as applicable to your camera, according to the table below.
diff --git a/docs/build/configure/components/camera/fake.md b/docs/components/camera/fake.md
similarity index 93%
rename from docs/build/configure/components/camera/fake.md
rename to docs/components/camera/fake.md
index 2cdf0f9198..c336a435ae 100644
--- a/docs/build/configure/components/camera/fake.md
+++ b/docs/components/camera/fake.md
@@ -25,7 +25,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `camera` type, then select the `fake` model.
Enter a name for your camera and click **Create**.
-![Configuration of a fake camera in the Viam app config builder.](/build/configure/components/camera/configure-fake.png)
+![Configuration of a fake camera in the Viam app config builder.](/components/camera/configure-fake.png)
Copy and paste the following attribute template into your camera's **Attributes** box.
Then remove and fill in the attributes as applicable to your camera, according to the table below.
@@ -87,7 +87,7 @@ Then toggle the camera or the Point Cloud Data view to ON.
You will see the live video feed from your camera.
You can change the refresh frequency as needed to change bandwidth.
-{{< imgproc src="/build/configure/components/camera/fake-view.png" alt="Fake Camera View" resize="600x" >}}
+{{< imgproc src="/components/camera/fake-view.png" alt="Fake Camera View" resize="600x" >}}
## Next Steps
diff --git a/docs/build/configure/components/camera/ffmpeg.md b/docs/components/camera/ffmpeg.md
similarity index 98%
rename from docs/build/configure/components/camera/ffmpeg.md
rename to docs/components/camera/ffmpeg.md
index 20a8039c1a..7dcc088c34 100644
--- a/docs/build/configure/components/camera/ffmpeg.md
+++ b/docs/components/camera/ffmpeg.md
@@ -23,7 +23,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `camera` type, then select the `ffmpeg` model.
Enter a name for your camera and click **Create**.
-![Configuration of a ffmpeg camera in the Viam app config builder.](/build/configure/components/camera/configure-ffmpeg.png)
+![Configuration of a ffmpeg camera in the Viam app config builder.](/components/camera/configure-ffmpeg.png)
Copy and paste the following attribute template into your camera's **Attributes** box.
Then remove and fill in the attributes as applicable to your camera, according to the table below.
diff --git a/docs/build/configure/components/camera/image-file.md b/docs/components/camera/image-file.md
similarity index 98%
rename from docs/build/configure/components/camera/image-file.md
rename to docs/components/camera/image-file.md
index ae5f7bdf1d..4743168914 100644
--- a/docs/build/configure/components/camera/image-file.md
+++ b/docs/components/camera/image-file.md
@@ -21,7 +21,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `camera` type, then select the `image_file` model.
Enter a name for your camera and click **Create**.
-![Configuration of an image file camera in the Viam app config builder.](/build/configure/components/camera/configure-image-file.png)
+![Configuration of an image file camera in the Viam app config builder.](/components/camera/configure-image-file.png)
Copy and paste the following attribute template into your camera's **Attributes** box.
Then remove and fill in the attributes as applicable to your camera, according to the table below.
diff --git a/docs/build/configure/components/camera/join-color-depth.md b/docs/components/camera/join-color-depth.md
similarity index 98%
rename from docs/build/configure/components/camera/join-color-depth.md
rename to docs/components/camera/join-color-depth.md
index 795ad40f43..883096d111 100644
--- a/docs/build/configure/components/camera/join-color-depth.md
+++ b/docs/components/camera/join-color-depth.md
@@ -24,7 +24,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `camera` type, then select the `join_color_depth` model.
Enter a name for your camera and click **Create**.
-![Configuration of a join color depth view in the Viam app config builder.](/build/configure/components/camera/configure-join-color-depth.png)
+![Configuration of a join color depth view in the Viam app config builder.](/components/camera/configure-join-color-depth.png)
Copy and paste the following attribute template into your camera's **Attributes** box.
Then remove and fill in the attributes as applicable to your camera, according to the table below.
diff --git a/docs/build/configure/components/camera/join-pointclouds.md b/docs/components/camera/join-pointclouds.md
similarity index 97%
rename from docs/build/configure/components/camera/join-pointclouds.md
rename to docs/components/camera/join-pointclouds.md
index cec63fb762..1d556c4f7f 100644
--- a/docs/build/configure/components/camera/join-pointclouds.md
+++ b/docs/components/camera/join-pointclouds.md
@@ -21,7 +21,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `camera` type, then select the `join_pointclouds` model.
Enter a name for your camera and click **Create**.
-![Configuration of a Join Point Clouds view in the Viam App config builder.](/build/configure/components/camera/configure-join-pointclouds.png)
+![Configuration of a Join Point Clouds view in the Viam App config builder.](/components/camera/configure-join-pointclouds.png)
Copy and paste the following attribute template into your camera's **Attributes** box.
Then remove and fill in the attributes as applicable to your camera, according to the table below.
diff --git a/docs/build/configure/components/camera/rtsp.md b/docs/components/camera/rtsp.md
similarity index 95%
rename from docs/build/configure/components/camera/rtsp.md
rename to docs/components/camera/rtsp.md
index e10b801862..926de8a8d9 100644
--- a/docs/build/configure/components/camera/rtsp.md
+++ b/docs/components/camera/rtsp.md
@@ -14,7 +14,7 @@ aliases:
The `rtsp` camera model supports streaming cameras with MJPEG tracks.
{{< alert title="Info" color="info" >}}
-If your streaming camera uses a different streaming video format, such as H264 or MP4, use the [`ffmpeg` camera](/build/configure/components/camera/ffmpeg/) instead.
+If your streaming camera uses a different streaming video format, such as H264 or MP4, use the [`ffmpeg` camera](/components/camera/ffmpeg/) instead.
{{< /alert >}}
{{< tabs name="Configure an rtsp camera" >}}
@@ -25,7 +25,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `camera` type, then select the `rtsp` model.
Enter a name for your camera and click **Create**.
-![Configuration of a rtsp camera in the Viam app config builder.](/build/configure/components/camera/configure-rtsp.png)
+![Configuration of a rtsp camera in the Viam app config builder.](/components/camera/configure-rtsp.png)
Copy and paste the following attribute template into your camera's **Attributes** box.
Then remove and fill in the attributes as applicable to your camera, according to the table below.
diff --git a/docs/build/configure/components/camera/single-stream.md b/docs/components/camera/single-stream.md
similarity index 98%
rename from docs/build/configure/components/camera/single-stream.md
rename to docs/components/camera/single-stream.md
index ab8e644ac9..7edcad8c03 100644
--- a/docs/build/configure/components/camera/single-stream.md
+++ b/docs/components/camera/single-stream.md
@@ -31,7 +31,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `camera` type, then select the `single_stream` model.
Enter a name for your camera and click **Create**.
-![Configuration of a single stream camera in the Viam App config builder.](/build/configure/components/camera/configure-single-stream.png)
+![Configuration of a single stream camera in the Viam App config builder.](/components/camera/configure-single-stream.png)
Copy and paste the following attribute template into your camera's **Attributes** box.
Then remove and fill in the attributes as applicable to your camera, according to the table below.
diff --git a/docs/build/configure/components/camera/transform.md b/docs/components/camera/transform.md
similarity index 99%
rename from docs/build/configure/components/camera/transform.md
rename to docs/components/camera/transform.md
index 66f4924e63..3613a148fd 100644
--- a/docs/build/configure/components/camera/transform.md
+++ b/docs/components/camera/transform.md
@@ -22,7 +22,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `camera` type, then select the `transform` model.
Enter a name for your camera and click **Create**.
-![Configuration of an transform view in the Viam app config builder.](/build/configure/components/camera/configure-transform.png)
+![Configuration of an transform view in the Viam app config builder.](/components/camera/configure-transform.png)
Copy and paste the following attribute template into your camera's **Attributes** box.
Then remove and fill in the attributes as applicable to your camera, according to the table below.
diff --git a/docs/build/configure/components/camera/ultrasonic.md b/docs/components/camera/ultrasonic.md
similarity index 91%
rename from docs/build/configure/components/camera/ultrasonic.md
rename to docs/components/camera/ultrasonic.md
index 0d78f77f2b..1e7afa3c44 100644
--- a/docs/build/configure/components/camera/ultrasonic.md
+++ b/docs/components/camera/ultrasonic.md
@@ -13,8 +13,8 @@ aliases:
---
{{< alert title="Usage" color="tip" >}}
-An ultrasonic distance sensor can also be configured as a [sensor](/build/configure/components/sensor/) resource.
-When configured as a sensor, you can use the sensor method [`GetReadings()`](/build/configure/components/sensor/#getreadings), rather than the camera method [`GetPointCloud()`](/build/configure/components/camera/#getpointcloud).
+An ultrasonic distance sensor can also be configured as a [sensor](/components/sensor/) resource.
+When configured as a sensor, you can use the sensor method [`GetReadings()`](/components/sensor/#getreadings), rather than the camera method [`GetPointCloud()`](/components/camera/#getpointcloud).
{{< /alert >}}
Configure an `ultrasonic` camera to integrate the [HC-S204](https://www.sparkfun.com/products/15569) ultrasonic distance sensor into your robot:
@@ -27,7 +27,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `camera` type, then select the `ultrasonic` model.
Enter a name for your camera and click **Create**.
-![Creation of a ultrasonic camera in the Viam app config builder.](/build/configure/components/camera/configure-ultrasonic.png)
+![Creation of a ultrasonic camera in the Viam app config builder.](/components/camera/configure-ultrasonic.png)
Copy and paste the following attribute template into your camera's **Attributes** box.
Then remove and fill in the attributes as applicable to your camera, according to the table below.
diff --git a/docs/build/configure/components/camera/velodyne.md b/docs/components/camera/velodyne.md
similarity index 91%
rename from docs/build/configure/components/camera/velodyne.md
rename to docs/components/camera/velodyne.md
index 58b33205e3..8191dcf7d5 100644
--- a/docs/build/configure/components/camera/velodyne.md
+++ b/docs/components/camera/velodyne.md
@@ -22,7 +22,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `camera` type, then select the `velodyne` model.
Enter a name for your camera and click **Create**.
-{{< imgproc src="/build/configure/components/camera/configure-velodyne.png" alt="Configuration of a velodyne camera in the Viam app config builder." resize="600x" >}}
+{{< imgproc src="/components/camera/configure-velodyne.png" alt="Configuration of a velodyne camera in the Viam app config builder." resize="600x" >}}
Edit and fill in the attributes as applicable.
diff --git a/docs/build/configure/components/camera/webcam.md b/docs/components/camera/webcam.md
similarity index 97%
rename from docs/build/configure/components/camera/webcam.md
rename to docs/components/camera/webcam.md
index 2d7f00ee66..838d9982cf 100644
--- a/docs/build/configure/components/camera/webcam.md
+++ b/docs/components/camera/webcam.md
@@ -22,7 +22,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `camera` type, then select the `webcam` model.
Enter a name for your camera and click **Create**.
-{{< imgproc src="/build/configure/components/camera/configure-webcam.png" alt="Configuration of a webcam camera in the Viam app config builder." resize="600x" >}}
+{{< imgproc src="/components/camera/configure-webcam.png" alt="Configuration of a webcam camera in the Viam app config builder." resize="600x" >}}
Edit and fill in the attributes as applicable.
If you click on the **Video Path** field while your robot is live, a dropdown autopopulates with identified camera paths.
diff --git a/docs/build/configure/components/component/_index.md b/docs/components/component/_index.md
similarity index 100%
rename from docs/build/configure/components/component/_index.md
rename to docs/components/component/_index.md
diff --git a/docs/build/configure/components/component/model1.md b/docs/components/component/model1.md
similarity index 93%
rename from docs/build/configure/components/component/model1.md
rename to docs/components/component/model1.md
index 13064bd4f2..27081dcf51 100644
--- a/docs/build/configure/components/component/model1.md
+++ b/docs/components/component/model1.md
@@ -21,7 +21,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `arm` type, then select the `model1` model.
Enter a name for your arm and click **Create**.
-{{< imgproc src="/build/configure/components/component/model1-builder.png" alt="Creation of a `model1` arm in the Viam app config builder." resize="600x" >}}
+{{< imgproc src="/components/component/model1-builder.png" alt="Creation of a `model1` arm in the Viam app config builder." resize="600x" >}}
Edit and fill in the attributes as applicable.
@@ -135,4 +135,4 @@ After you configure your compontent, navigate to the [**Control** tab](/fleet/ma
Then _explain how to interact with the panel_.
-{{}}
+{{}}
diff --git a/docs/build/configure/components/encoder/_index.md b/docs/components/encoder/_index.md
similarity index 99%
rename from docs/build/configure/components/encoder/_index.md
rename to docs/components/encoder/_index.md
index b2971ee63c..bb1a607d7e 100644
--- a/docs/build/configure/components/encoder/_index.md
+++ b/docs/components/encoder/_index.md
@@ -30,7 +30,7 @@ The encoder component supports:
Most robots with an encoder need at least the following hardware:
-- A [board component](/build/configure/components/board/) that can run a `viam-server` instance.
+- A [board component](/components/board/) that can run a `viam-server` instance.
For example, a Raspberry Pi, or another model of single-board computer with GPIO (general purpose input/output) pins.
- Some sort of rotary robot part (like a motor, joint or dial) for which you want to measure movement.
diff --git a/docs/build/configure/components/encoder/ams-as5048.md b/docs/components/encoder/ams-as5048.md
similarity index 62%
rename from docs/build/configure/components/encoder/ams-as5048.md
rename to docs/components/encoder/ams-as5048.md
index 037a7134f1..8cff1830a4 100644
--- a/docs/build/configure/components/encoder/ams-as5048.md
+++ b/docs/components/encoder/ams-as5048.md
@@ -11,13 +11,13 @@ aliases:
---
The `AMS-AS5048` encoder model supports AMS's [AS5048](https://ams.com/en/as5048a) encoder.
-This is an absolute encoder that uses an [I2C](/build/configure/components/board/#i2cs) or [SPI](/build/configure/components/board/#spis) interface to connect.
+This is an absolute encoder that uses an [I2C](/components/board/#i2cs) or [SPI](/components/board/#spis) interface to connect.
{{% alert title="Important" color="note" %}}
-Any [motor](/build/configure/components/motor/) using the `AMS-AS5048` encoder must have its `ticks_per_rotation` attribute configured as `1` because this encoder provides angular measurements directly.
+Any [motor](/components/motor/) using the `AMS-AS5048` encoder must have its `ticks_per_rotation` attribute configured as `1` because this encoder provides angular measurements directly.
{{% /alert %}}
-To configure the encoder, you must first [configure an I2C bus](/build/configure/components/board/#i2cs) on your [board](/build/configure/components/board/).
+To configure the encoder, you must first [configure an I2C bus](/components/board/#i2cs) on your [board](/components/board/).
{{< tabs name="Configure an AMS-AS5048 Encoder" >}}
{{% tab name="Config Builder" %}}
@@ -27,7 +27,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `encoder` type, then select the `AMS-AS5048` model.
Enter a name for your encoder and click **Create**.
-![Configuration of an AS5048 encoder in the Viam app config builder.](/build/configure/components/encoder/configure-am5.png)
+![Configuration of an AS5048 encoder in the Viam app config builder.](/components/encoder/configure-am5.png)
Edit and fill in the attributes as applicable.
@@ -59,8 +59,8 @@ The following attributes are available for `AMS-AS5048` encoders:
| Name | Type | Inclusion | Description |
| ---- | ---- | --------- | ----------- |
-| `board` | string | **Required** | The `name` of the [board](/build/configure/components/board/) to which your encoder is connected. |
+| `board` | string | **Required** | The `name` of the [board](/components/board/) to which your encoder is connected. |
| `connection_type` | string | **Required** | Use `"i2c"`. |
-| `i2c_attributes` | object | **Required** | The attributes to configure [I2C](/build/configure/components/board/#i2cs) connection: -
i2c_bus
: The `name` of the [I2C bus configured](/build/configure/components/board/#i2cs) on the [board](/build/configure/components/board/) wired to this encoder.
Example: `"main"` -
i2c_addr
: The address of the bus.
Example: `64`
|
+| `i2c_attributes` | object | **Required** | The attributes to configure [I2C](/components/board/#i2cs) connection: -
i2c_bus
: The `name` of the [I2C bus configured](/components/board/#i2cs) on the [board](/components/board/) wired to this encoder.
Example: `"main"` -
i2c_addr
: The address of the bus.
Example: `64`
|
{{< readfile "/static/include/components/test-control/encoder-control.md" >}}
diff --git a/docs/build/configure/components/encoder/arduino.md b/docs/components/encoder/arduino.md
similarity index 96%
rename from docs/build/configure/components/encoder/arduino.md
rename to docs/components/encoder/arduino.md
index e2c38f4245..d8c9472462 100644
--- a/docs/build/configure/components/encoder/arduino.md
+++ b/docs/components/encoder/arduino.md
@@ -19,7 +19,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `encoder` type, then select the `arduino` model.
Enter a name for your encoder and click **Create**.
-![Configuration of an Arduino encoder in the Viam app config builder.](/build/configure/components/encoder/configure-arduino.png)
+![Configuration of an Arduino encoder in the Viam app config builder.](/components/encoder/configure-arduino.png)
Edit and fill in the attributes as applicable.
diff --git a/docs/build/configure/components/encoder/fake.md b/docs/components/encoder/fake.md
similarity index 91%
rename from docs/build/configure/components/encoder/fake.md
rename to docs/components/encoder/fake.md
index 00e4cbab91..40a53566f4 100644
--- a/docs/build/configure/components/encoder/fake.md
+++ b/docs/components/encoder/fake.md
@@ -21,7 +21,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `encoder` type, then select the `fake` model.
Enter a name for your encoder and click **Create**.
-![Configuration of a fake encoder in the Viam app config builder.](/build/configure/components/encoder/configure-fake.png)
+![Configuration of a fake encoder in the Viam app config builder.](/components/encoder/configure-fake.png)
{{% /tab %}}
{{% tab name="JSON Template" %}}
@@ -59,4 +59,4 @@ No attributes are available for `fake` encoders.
Once your encoder is configured and your robot is connected, go to the [**Control** tab](/fleet/machines/#control) and click on the encoder's dropdown panel.
The ticks count is displayed.
-![Encoder control panel.](/build/configure/components/encoder/control.png)
+![Encoder control panel.](/components/encoder/control.png)
diff --git a/docs/build/configure/components/encoder/incremental.md b/docs/components/encoder/incremental.md
similarity index 93%
rename from docs/build/configure/components/encoder/incremental.md
rename to docs/components/encoder/incremental.md
index 6da06f4622..06ea707696 100644
--- a/docs/build/configure/components/encoder/incremental.md
+++ b/docs/components/encoder/incremental.md
@@ -23,7 +23,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `encoder` type, then select the `incremental` model.
Enter a name for your encoder and click **Create**.
-![Configuration of an incremental encoder in the Viam app config builder.](/build/configure/components/encoder/configure-incremental.png)
+![Configuration of an incremental encoder in the Viam app config builder.](/components/encoder/configure-incremental.png)
Fill in and edit the attributes as applicable.
@@ -84,7 +84,7 @@ The following attributes are available for `incremental` encoders:
| Name | Type | Inclusion | Description |
| ---- | ---- | --------- | ----------- |
-| `board` | string | **Required** | The `name` of the [board](/build/configure/components/board/) to which the encoder is wired. |
+| `board` | string | **Required** | The `name` of the [board](/components/board/) to which the encoder is wired. |
| `pins` | object | **Required** | A struct holding the names of the pins wired to the encoder: -
a
: {{< glossary_tooltip term_id="pin-number" text="Pin number" >}} of one of the pins to which the encoder is wired. -
b
: Required for two phase encoder. {{< glossary_tooltip term_id="pin-number" text="Pin number" >}} for the second board pin to which the encoder is wired. If the encoded motor does not operate as expected, the encoder pins might be configured in reverse, switch the a
and b
pin definitions in your incremental encoder attributes to reconfigure your encoded motor.
|
Viam also supports a model of encoder called [`"single"`](../single/) which requires only one pin (`i`).
diff --git a/docs/build/configure/components/encoder/single.md b/docs/components/encoder/single.md
similarity index 80%
rename from docs/build/configure/components/encoder/single.md
rename to docs/components/encoder/single.md
index 072110b72b..0080747a84 100644
--- a/docs/build/configure/components/encoder/single.md
+++ b/docs/components/encoder/single.md
@@ -10,8 +10,8 @@ aliases:
# SMEs: Rand
---
-A `single` encoder sends a signal from the rotating encoder over a single wire to one pin on the [board](/build/configure/components/board/).
-The direction of spin is dictated by the [motor](/build/configure/components/motor/) that has this encoder's name in its `encoder` attribute field.
+A `single` encoder sends a signal from the rotating encoder over a single wire to one pin on the [board](/components/board/).
+The direction of spin is dictated by the [motor](/components/motor/) that has this encoder's name in its `encoder` attribute field.
{{< tabs name="Configure an single encoder" >}}
{{% tab name="Config Builder" %}}
@@ -21,7 +21,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `encoder` type, then select the `single` model.
Enter a name for your encoder and click **Create**.
-![Configuration of a single encoder in the Viam app config builder.](/build/configure/components/encoder/configure-single.png)
+![Configuration of a single encoder in the Viam app config builder.](/components/encoder/configure-single.png)
Fill in and edit the attributes as applicable.
@@ -51,7 +51,7 @@ The following attributes are available for `single` encoders:
| Name | Type | Inclusion | Description |
| ---- | ---- | --------- | ----------- |
-| `board` | string | **Required** | The `name` of the [board](/build/configure/components/board/) to which the encoder is wired. |
+| `board` | string | **Required** | The `name` of the [board](/components/board/) to which the encoder is wired. |
| `pins` | object | **Required** | A struct holding the name of the pin wired to the encoder: -
i
: {{< glossary_tooltip term_id="pin-number" text="Pin number" >}} of the pin to which the encoder is wired.
|
Viam also supports a model of encoder called [`"incremental"`](../incremental/) which uses two pins.
diff --git a/docs/build/configure/components/gantry/_index.md b/docs/components/gantry/_index.md
similarity index 96%
rename from docs/build/configure/components/gantry/_index.md
rename to docs/components/gantry/_index.md
index ed63d41400..1fc8f99305 100644
--- a/docs/build/configure/components/gantry/_index.md
+++ b/docs/components/gantry/_index.md
@@ -22,7 +22,7 @@ The linear rail design makes gantries a common and reliable system for simple po
This component abstracts the hardware of a gantry to give you an easy interface for coordinated control of linear actuators, even many at once [(multi-axis)](multi-axis/).
Gantry components can only be controlled in terms of linear motion (you cannot rotate them).
@@ -30,10 +30,10 @@ Each gantry can only move in one axis within the limits of the length of the lin
Most robots with a gantry need at least the following hardware:
-- A [board](/build/configure/components/board/) or [controller](/build/configure/components/input-controller/) component that can detect changes in voltage on GPIO pins
-- A [motor](/build/configure/components/motor/) that can move linear rails
- - Encoded motor: See [DC motor with encoder](/build/configure/components/motor/gpio/encoded-motor/) and [encoder component](/build/configure/components/encoder/).
- - Stepper motor: See [Stepper motor](/build/configure/components/motor/gpiostepper/).
+- A [board](/components/board/) or [controller](/components/input-controller/) component that can detect changes in voltage on GPIO pins
+- A [motor](/components/motor/) that can move linear rails
+ - Encoded motor: See [DC motor with encoder](/components/motor/gpio/encoded-motor/) and [encoder component](/components/encoder/).
+ - Stepper motor: See [Stepper motor](/components/motor/gpiostepper/).
Requires setting limit switches in the config of the gantry, or setting offsets in the config of the stepper motor.
- Limit switches, to attach to the ends of the gantry's axis
diff --git a/docs/build/configure/components/gantry/fake.md b/docs/components/gantry/fake.md
similarity index 94%
rename from docs/build/configure/components/gantry/fake.md
rename to docs/components/gantry/fake.md
index a23885d1bf..2cecc2572b 100644
--- a/docs/build/configure/components/gantry/fake.md
+++ b/docs/components/gantry/fake.md
@@ -24,7 +24,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `gantry` type, then select the `fake` model.
Enter a name for your gantry and click **Create**.
-![An example configuration for a fake gantry in the Viam app Config Builder.](/build/configure/components/gantry/fake-gantry-ui-config.png)
+![An example configuration for a fake gantry in the Viam app Config Builder.](/components/gantry/fake-gantry-ui-config.png)
{{% /tab %}}
{{% tab name="JSON Template" %}}
diff --git a/docs/build/configure/components/gantry/multi-axis.md b/docs/components/gantry/multi-axis.md
similarity index 94%
rename from docs/build/configure/components/gantry/multi-axis.md
rename to docs/components/gantry/multi-axis.md
index d180679b92..c8ca7fb0b1 100644
--- a/docs/build/configure/components/gantry/multi-axis.md
+++ b/docs/components/gantry/multi-axis.md
@@ -12,7 +12,7 @@ aliases:
# SME: Rand, Martha
---
-Configure a `multi-axis` gantry to integrate a gantry made up of multiple [`single-axis`](/build/configure/components/gantry/single-axis/) gantries into your robot:
+Configure a `multi-axis` gantry to integrate a gantry made up of multiple [`single-axis`](/components/gantry/single-axis/) gantries into your robot:
{{< tabs >}}
{{% tab name="Config Builder" %}}
@@ -22,7 +22,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `gantry` type, then select the `multi-axis` model.
Enter a name for your gantry and click **Create**.
-![Creation of a multi-axis gantry component in the Viam app config builder.](/build/configure/components/gantry/multi-axis-ui-config.png)
+![Creation of a multi-axis gantry component in the Viam app config builder.](/components/gantry/multi-axis-ui-config.png)
Copy and paste the following attribute template into your gantry's **Attributes** box.
Then remove and fill in the attributes as applicable to your gantry, according to the table below.
@@ -228,7 +228,7 @@ The following attributes are available for `multi-axis` gantries:
| Attribute | Type | Inclusion | Description |
| --------- | ---- | --------- | ----------- |
-| `subaxes_list` | array | **Required** | An array of the `name` of each of the sub-axes, the [`single-axis`](/build/configure/components/gantry/single-axis/) gantries that make up the `multi-axis` gantry. |
+| `subaxes_list` | array | **Required** | An array of the `name` of each of the sub-axes, the [`single-axis`](/components/gantry/single-axis/) gantries that make up the `multi-axis` gantry. |
| `move_simultaneously` | boolean | Optional | A boolean indicating if the sub-axes should move together, or one at a time when `MoveToPosition` is called.
Default: `false` |
{{< readfile "/static/include/components/test-control/gantry-control.md" >}}
diff --git a/docs/build/configure/components/gantry/single-axis.md b/docs/components/gantry/single-axis.md
similarity index 81%
rename from docs/build/configure/components/gantry/single-axis.md
rename to docs/components/gantry/single-axis.md
index ca8df1cf17..cd78a6aeef 100644
--- a/docs/build/configure/components/gantry/single-axis.md
+++ b/docs/components/gantry/single-axis.md
@@ -13,7 +13,7 @@ aliases:
---
Configure a `single-axis` gantry to integrate a single-axis gantry into your robot.
-Before configuring the gantry, configure any [motor components](/build/configure/components/motor/) that are part of the gantry.
+Before configuring the gantry, configure any [motor components](/components/motor/) that are part of the gantry.
{{< tabs >}}
{{% tab name="Config Builder" %}}
@@ -23,7 +23,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `gantry` type, then select the `single-axis` model.
Enter a name for your sensor and click **Create**.
-![Creation of a single-axis gantry component in the Viam app config builder.](/build/configure/components/gantry/single-axis-ui-config.png)
+![Creation of a single-axis gantry component in the Viam app config builder.](/components/gantry/single-axis-ui-config.png)
Copy and paste the following attribute template into your gantry's **Attributes** box.
Then remove and fill in the attributes as applicable to your gantry, according to the table below.
@@ -85,9 +85,9 @@ The following attributes are available for `single-axis` gantries:
| Attribute | Type | Inclusion | Description |
| --------- | ---- | --------- | ---------- |
| `length_mm` | int | **Required** | Length of the axis of the gantry in millimeters. |
-| `motor` | string | **Required** | `name` of the [motor](/build/configure/components/motor/) that moves the gantry's actuator. |
-| `board` | string | Optional | `name` of the [board](/build/configure/components/board/) containing the limit switches and pins. If `limit_pins` exist, `board` is required. |
-| `limit_pins` | object | Optional | The `boards`'s pins attached to the limit switches on either end. If the [motor](/build/configure/components/motor/) used does not include an [encoder](/build/configure/components/motor/gpio/encoded-motor/), `limit_pins` are required to be set. |
+| `motor` | string | **Required** | `name` of the [motor](/components/motor/) that moves the gantry's actuator. |
+| `board` | string | Optional | `name` of the [board](/components/board/) containing the limit switches and pins. If `limit_pins` exist, `board` is required. |
+| `limit_pins` | object | Optional | The `boards`'s pins attached to the limit switches on either end. If the [motor](/components/motor/) used does not include an [encoder](/components/motor/gpio/encoded-motor/), `limit_pins` are required to be set. |
| `limit_pin_enabled_high` | boolean | Optional | Whether the limit pins are enabled.
Default: `false` |
| `mm_per_rev` | int | **Required** | How far the gantry moves (linear, distance in mm) per one revolution of the motor’s output shaft. This typically corresponds to Distance = PulleyDiameter * pi, or the pitch of a linear screw. |
| `gantry_mm_per_sec` | int | Optional | The speed at which the gantry moves in millimeters per second. Used to calculate the gantry `motor`'s revolutions per minute (RPM).
Default: `100` RPM |
diff --git a/docs/build/configure/components/generic/_index.md b/docs/components/generic/_index.md
similarity index 94%
rename from docs/build/configure/components/generic/_index.md
rename to docs/components/generic/_index.md
index 870d089775..a1ddb40f57 100644
--- a/docs/build/configure/components/generic/_index.md
+++ b/docs/components/generic/_index.md
@@ -17,7 +17,7 @@ aliases:
The _generic_ component {{< glossary_tooltip term_id="subtype" text="subtype" >}} enables you to add support for unique types of hardware that do not already have an [appropriate API](/build/program/apis/#component-apis) defined for them.
-For example, when using an [arm component](/build/configure/components/arm/), it makes sense to use the [arm API](/build/configure/components/arm/#api), which provides specific functionality an arm component needs, such as moving to position or stopping movement.
+For example, when using an [arm component](/components/arm/), it makes sense to use the [arm API](/components/arm/#api), which provides specific functionality an arm component needs, such as moving to position or stopping movement.
If you want to use an LED display, you need very different functionality that isn't currently exposed in any API.
Instead, you can use the generic component API to add support for your unique type of hardware, like LED displays, to your machine.
@@ -29,8 +29,8 @@ Use generic for a {{< glossary_tooltip term_id="modular-resource" text="modular
The generic component API only supports the `DoCommand` method.
If you use the generic subtype, your module needs to define any and all component functionality and pass it through `DoCommand`.
-Whenever possible, it is best to use an [existing component API](/build/configure/components/) instead of generic so that you do not have to replicate code.
-If you want to use most of an existing API but need just a few other functions, try using the `DoCommand` endpoint and extra parameters to add custom functionality to an [existing subtype](/build/configure/components/), instead of using generic.
+Whenever possible, it is best to use an [existing component API](/components/) instead of generic so that you do not have to replicate code.
+If you want to use most of an existing API but need just a few other functions, try using the `DoCommand` endpoint and extra parameters to add custom functionality to an [existing subtype](/components/), instead of using generic.
{{% /alert %}}
diff --git a/docs/build/configure/components/generic/fake.md b/docs/components/generic/fake.md
similarity index 93%
rename from docs/build/configure/components/generic/fake.md
rename to docs/components/generic/fake.md
index 73f1ab90e8..c8a345e0d6 100644
--- a/docs/build/configure/components/generic/fake.md
+++ b/docs/components/generic/fake.md
@@ -21,7 +21,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `generic` type, then select the `fake` model.
Enter a name for your generic component and click **Create**.
-![An example configuration for a fake generic component in the Viam app Config Builder.](/build/configure/components/generic/fake-generic-ui-config.png)
+![An example configuration for a fake generic component in the Viam app Config Builder.](/components/generic/fake-generic-ui-config.png)
{{% /tab %}}
{{% tab name="JSON Template" %}}
diff --git a/docs/build/configure/components/gripper/_index.md b/docs/components/gripper/_index.md
similarity index 100%
rename from docs/build/configure/components/gripper/_index.md
rename to docs/components/gripper/_index.md
diff --git a/docs/build/configure/components/gripper/fake.md b/docs/components/gripper/fake.md
similarity index 94%
rename from docs/build/configure/components/gripper/fake.md
rename to docs/components/gripper/fake.md
index 760b5ad9bd..0e71c6738b 100644
--- a/docs/build/configure/components/gripper/fake.md
+++ b/docs/components/gripper/fake.md
@@ -24,7 +24,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `gripper` type, then select the `fake` model.
Enter a name for your gripper and click **Create**.
-![An example configuration for a fake gripper in the Viam app Config Builder.](/build/configure/components/gripper/fake-gripper-ui-config.png)
+![An example configuration for a fake gripper in the Viam app Config Builder.](/components/gripper/fake-gripper-ui-config.png)
{{% /tab %}}
{{% tab name="JSON Template" %}}
diff --git a/docs/build/configure/components/gripper/softrobotics.md b/docs/components/gripper/softrobotics.md
similarity index 89%
rename from docs/build/configure/components/gripper/softrobotics.md
rename to docs/components/gripper/softrobotics.md
index 1153d75bb4..905c8f813e 100644
--- a/docs/build/configure/components/gripper/softrobotics.md
+++ b/docs/components/gripper/softrobotics.md
@@ -19,7 +19,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `gripper` type, then select the `softrobotics` model.
Enter a name for your gripper and click **Create**.
-![Creation of a softrobotics gripper component in the Viam app config builder.](/build/configure/components/gripper/softrobotics-ui-config.png)
+![Creation of a softrobotics gripper component in the Viam app config builder.](/components/gripper/softrobotics-ui-config.png)
Copy and paste the following attribute template into your gripper's **Attributes** box.
Then remove and fill in the attributes as applicable to your gripper, according to the table below.
@@ -121,10 +121,10 @@ The following attributes are available for `softrobotics` grippers:
| Name | Inclusion | Type | Description |
| --------------- | ------------ | ------ | -------- |
-| `board` | **Required** | string | The `name` of the [board](/build/configure/components/board/) to which your gripper [control unit](https://www.softroboticsinc.com/uploads/2020/05/Tech_Sheet_coDrive_Control_Unit_-__TS-200210_Rev_B.pdf) is wired. |
+| `board` | **Required** | string | The `name` of the [board](/components/board/) to which your gripper [control unit](https://www.softroboticsinc.com/uploads/2020/05/Tech_Sheet_coDrive_Control_Unit_-__TS-200210_Rev_B.pdf) is wired. |
| `open` | **Required** | string | The {{< glossary_tooltip term_id="pin-number" text="pin number" >}} of the board pin wired to the open pin (D1) on the gripper controller. |
| `close` | **Required** | string | The {{< glossary_tooltip term_id="pin-number" text="pin number" >}} of the board pin wired to the close pin (D2) on the gripper controller. |
| `power` | **Required** | string | The {{< glossary_tooltip term_id="pin-number" text="pin number" >}} of the board pin wired to the enable pin (D3) on the gripper controller. |
-| `analog_reader` | **Required** | string | Must be called `"psi"`. You must [configure an analog](/build/configure/components/board/#analogs) on your board and name it `"psi"`. |
+| `analog_reader` | **Required** | string | Must be called `"psi"`. You must [configure an analog](/components/board/#analogs) on your board and name it `"psi"`. |
{{< readfile "/static/include/components/test-control/gripper-control.md" >}}
diff --git a/docs/build/configure/components/input-controller/_index.md b/docs/components/input-controller/_index.md
similarity index 99%
rename from docs/build/configure/components/input-controller/_index.md
rename to docs/components/input-controller/_index.md
index a48cf4e9fe..797ee465ab 100644
--- a/docs/build/configure/components/input-controller/_index.md
+++ b/docs/components/input-controller/_index.md
@@ -27,7 +27,7 @@ Most robots with an input controller need at least the following hardware:
- A computer capable of running `viam-server`.
- A power supply cable or batteries for the input device and the robot.
-- A component that you can direct the input to control, like an [arm](/build/configure/components/arm/) or [motor](/build/configure/components/motor/).
+- A component that you can direct the input to control, like an [arm](/components/arm/) or [motor](/components/motor/).
## Related Services
diff --git a/docs/build/configure/components/input-controller/fake.md b/docs/components/input-controller/fake.md
similarity index 95%
rename from docs/build/configure/components/input-controller/fake.md
rename to docs/components/input-controller/fake.md
index 8b16936d8d..3a6101c1c4 100644
--- a/docs/build/configure/components/input-controller/fake.md
+++ b/docs/components/input-controller/fake.md
@@ -24,7 +24,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `input_controller` type, then select the `fake` model.
Enter a name for your input controller and click **Create**.
-![An example configuration for a fake input controller component in the Viam App config builder.](/build/configure/components/input-controller/fake-input-controller-ui-config.png)
+![An example configuration for a fake input controller component in the Viam App config builder.](/components/input-controller/fake-input-controller-ui-config.png)
Edit and fill in the attributes as applicable.
diff --git a/docs/build/configure/components/input-controller/gamepad.md b/docs/components/input-controller/gamepad.md
similarity index 96%
rename from docs/build/configure/components/input-controller/gamepad.md
rename to docs/components/input-controller/gamepad.md
index 5710370734..bd7022cfbf 100644
--- a/docs/build/configure/components/input-controller/gamepad.md
+++ b/docs/components/input-controller/gamepad.md
@@ -22,7 +22,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `input_controller` type, then select the `gamepad` model.
Enter a name for your input controller and click **Create**.
-![An example configuration for a linux-based gamepad input controller component in the Viam App config builder](/build/configure/components/input-controller/gamepad-input-controller-ui-config.png)
+![An example configuration for a linux-based gamepad input controller component in the Viam App config builder](/components/input-controller/gamepad-input-controller-ui-config.png)
Copy and paste the following attribute template into your input controller's **Attributes** box.
Then remove and fill in the attributes as applicable to your input controller, according to the table below.
diff --git a/docs/build/configure/components/input-controller/gpio.md b/docs/components/input-controller/gpio.md
similarity index 98%
rename from docs/build/configure/components/input-controller/gpio.md
rename to docs/components/input-controller/gpio.md
index 4a3604e81a..e5c463f6a4 100644
--- a/docs/build/configure/components/input-controller/gpio.md
+++ b/docs/components/input-controller/gpio.md
@@ -21,7 +21,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `input_controller` type, then select the `gpio` model.
Enter a name for your input controller and click **Create**.
-![An example configuration for a GPIO input controller component in the Viam App config builder](/build/configure/components/input-controller/gpio-input-controller-ui-config.png)
+![An example configuration for a GPIO input controller component in the Viam App config builder](/components/input-controller/gpio-input-controller-ui-config.png)
Copy and paste the following attribute template into your input controller's **Attributes** box.
Then remove and fill in the attributes as applicable to your input controller, according to the table below.
diff --git a/docs/build/configure/components/input-controller/mux.md b/docs/components/input-controller/mux.md
similarity index 97%
rename from docs/build/configure/components/input-controller/mux.md
rename to docs/components/input-controller/mux.md
index 7208d644b1..a79787e49f 100644
--- a/docs/build/configure/components/input-controller/mux.md
+++ b/docs/components/input-controller/mux.md
@@ -29,7 +29,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `input_controller` type, then select the `mux` model.
Enter a name for your input controller and click **Create**.
-![An example configuration for a multiplexed input controller component in the Viam App config builder](/build/configure/components/input-controller/mux-input-controller-ui-config.png)
+![An example configuration for a multiplexed input controller component in the Viam App config builder](/components/input-controller/mux-input-controller-ui-config.png)
Copy and paste the following attribute template into your input controller's **Attributes** box.
Then remove and fill in the attributes as applicable to your input controller, according to the table below.
diff --git a/docs/build/configure/components/input-controller/webgamepad.md b/docs/components/input-controller/webgamepad.md
similarity index 93%
rename from docs/build/configure/components/input-controller/webgamepad.md
rename to docs/components/input-controller/webgamepad.md
index 460f934b0d..436754a7dc 100644
--- a/docs/build/configure/components/input-controller/webgamepad.md
+++ b/docs/components/input-controller/webgamepad.md
@@ -30,7 +30,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `input_controller` type, then select the `webgamepad` model.
Enter the name `WebGamepad` and click **Create**.
-![An example configuration for a web-based gamepad input controller component in the Viam App config builder](/build/configure/components/input-controller/webgamepad-input-controller-ui-config.png)
+![An example configuration for a web-based gamepad input controller component in the Viam App config builder](/components/input-controller/webgamepad-input-controller-ui-config.png)
{{% /tab %}}
{{% tab name="JSON Template" %}}
diff --git a/docs/build/configure/components/motor/28byj48.md b/docs/components/motor/28byj48.md
similarity index 89%
rename from docs/build/configure/components/motor/28byj48.md
rename to docs/components/motor/28byj48.md
index 60feaa30be..7a1eb1608a 100644
--- a/docs/build/configure/components/motor/28byj48.md
+++ b/docs/components/motor/28byj48.md
@@ -20,7 +20,7 @@ Viam also supports:
{{< /alert >}}
-To configure a `28byj48` motor as a component of your robot, first configure the [board](/build/configure/components/board/) to which the motor driver is wired.
+To configure a `28byj48` motor as a component of your robot, first configure the [board](/components/board/) to which the motor driver is wired.
Then, add the motor:
{{< tabs name="gpiostepper-config">}}
@@ -31,7 +31,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `motor` type, then select the `28byj48` model.
Enter a name for your motor and click **Create**.
-![A 28byj48 motor config.](/build/configure/components/motor/28byj48-config-ui.png)
+![A 28byj48 motor config.](/components/motor/28byj48-config-ui.png)
Edit and fill in the attributes as applicable.
@@ -112,12 +112,12 @@ The following attributes are available for `28byj48` motors:
| Name | Type | Inclusion | Description |
| ---- | ---- | --------- | ----------- |
-| `board` | string | **Required** | `name` of the [board](/build/configure/components/board/) the motor driver is wired to. |
-| `pins` | object | **Required** | A json object containing the {{< glossary_tooltip term_id="pin-number" text="pin numbers" >}} the `in1`, `in2`, `in3`, and `in4` pins of the motor driver are wired to on the [board](/build/configure/components/board/). |
+| `board` | string | **Required** | `name` of the [board](/components/board/) the motor driver is wired to. |
+| `pins` | object | **Required** | A json object containing the {{< glossary_tooltip term_id="pin-number" text="pin numbers" >}} the `in1`, `in2`, `in3`, and `in4` pins of the motor driver are wired to on the [board](/components/board/). |
| `ticks_per_rotation` | int | **Required** | Number of full steps in a rotation. The motor takes 5.625*(1/64)° per step. One full rotation (360°) is 4096 steps. |
Refer to your motor and motor driver data sheets for specifics.
-![An example wiring diagram for a four wire 28BYJ-48 stepper motor driven by a ULN2003A driver chip breakout board. The driver is connected to a Raspberry Pi with four wires labeled IN1, IN2, IN3, and IN4. These are connected to Pi pins 11, 12, 13 and 15, respectively. A separate 12V power supply is attached to the motor driver to power the motor.](/build/configure/components/motor/28byj48-wiring.png)
+![An example wiring diagram for a four wire 28BYJ-48 stepper motor driven by a ULN2003A driver chip breakout board. The driver is connected to a Raspberry Pi with four wires labeled IN1, IN2, IN3, and IN4. These are connected to Pi pins 11, 12, 13 and 15, respectively. A separate 12V power supply is attached to the motor driver to power the motor.](/components/motor/28byj48-wiring.png)
{{< readfile "/static/include/components/test-control/motor-control.md" >}}
diff --git a/docs/build/configure/components/motor/_index.md b/docs/components/motor/_index.md
similarity index 99%
rename from docs/build/configure/components/motor/_index.md
rename to docs/components/motor/_index.md
index 48f7a54e96..e9799f4526 100644
--- a/docs/build/configure/components/motor/_index.md
+++ b/docs/components/motor/_index.md
@@ -24,7 +24,7 @@ Most robots with a motor need at least the following hardware:
- A compatible motor driver.
This takes signals from the computer and sends the corresponding signals and power to the motor.
Selected based on the type of motor (for example, brushed, brushless, or stepper) and its power requirements.
-- A [board component](/build/configure/components/board/) to send signals to the motor driver[^dmcboard].
+- A [board component](/components/board/) to send signals to the motor driver[^dmcboard].
For example, a Raspberry Pi, or another model of single-board computer with GPIO (general purpose input/output) pins.
[^dmcboard]: The `DMC4000` model does not require a board.
diff --git a/docs/build/configure/components/motor/dmc4000.md b/docs/components/motor/dmc4000.md
similarity index 95%
rename from docs/build/configure/components/motor/dmc4000.md
rename to docs/components/motor/dmc4000.md
index 315e726fdd..81b51c9219 100644
--- a/docs/build/configure/components/motor/dmc4000.md
+++ b/docs/components/motor/dmc4000.md
@@ -12,8 +12,8 @@ aliases:
This model supports stepper motors controlled by [DMC-40x0 series motion controllers](https://www.galil.com/motion-controllers/multi-axis/dmc-40x0).
-Whereas a basic low-level stepper driver supported by the [`gpiostepper` model](/build/configure/components/motor/gpiostepper/) sends power to a stepper motor based on PWM signals from GPIO pins, the DMC40x0 motion controller has many motion control features.
-When using it, you do not need to configure a [board component](/build/configure/components/board/) because it handles computation and signal creation on the motion controller itself.
+Whereas a basic low-level stepper driver supported by the [`gpiostepper` model](/components/motor/gpiostepper/) sends power to a stepper motor based on PWM signals from GPIO pins, the DMC40x0 motion controller has many motion control features.
+When using it, you do not need to configure a [board component](/components/board/) because it handles computation and signal creation on the motion controller itself.
The DMC-40x0 controller can drive a variety of motor types, but the built-in Viam implementation supports only stepper motors at this time.
You can drive other types of motors with Viam and the DMC-40x0 controller by creating a {{< glossary_tooltip term_id="modular-resource" text="modular resources" >}} to add support for it.
@@ -26,7 +26,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `motor` type, then select the `DMC4000` model.
Enter a name for your motor and click **Create**.
-![A DMC4000 motor config with the attributes configured per the Raw JSON on the next tab in this doc.](/build/configure/components/motor/dmc4000-config-ui.png)
+![A DMC4000 motor config with the attributes configured per the Raw JSON on the next tab in this doc.](/components/motor/dmc4000-config-ui.png)
Edit and fill in the attributes as applicable.
diff --git a/docs/build/configure/components/motor/fake.md b/docs/components/motor/fake.md
similarity index 78%
rename from docs/build/configure/components/motor/fake.md
rename to docs/components/motor/fake.md
index 16475accf3..86e961af9d 100644
--- a/docs/build/configure/components/motor/fake.md
+++ b/docs/components/motor/fake.md
@@ -11,7 +11,7 @@ aliases:
---
Configuring a `fake` motor can be convenient for testing software without using any hardware.
-For example, you can use a `fake` component as a placeholder while waiting on a hardware shipment, so that other components that depend on this motor (for example, a [base](/build/configure/components/base/)) won't fail to initialize, and your SDK code won't throw errors when it fails to find a physical motor connected to your robot.
+For example, you can use a `fake` component as a placeholder while waiting on a hardware shipment, so that other components that depend on this motor (for example, a [base](/components/base/)) won't fail to initialize, and your SDK code won't throw errors when it fails to find a physical motor connected to your robot.
{{< tabs name="fake-config">}}
{{% tab name="Config Builder" %}}
@@ -21,7 +21,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `motor` type, then select the `fake` model.
Enter a name for your motor and click **Create**.
-![A fake motor config.](/build/configure/components/motor/fake-config-ui.png)
+![A fake motor config.](/components/motor/fake-config-ui.png)
Edit and fill in the attributes as applicable.
@@ -79,12 +79,12 @@ However, if you would like to mock up a virtual placeholder for a real, physical
| Name | Type | Inclusion | Description |
| ---- | ---- | --------- | ----------- |
-| `board` | string | Optional | `name` of the [board](/build/configure/components/board/) to which the motor driver is wired. |
+| `board` | string | Optional | `name` of the [board](/components/board/) to which the motor driver is wired. |
| `min_power_pct` | number | Optional | Sets a limit on minimum power percentage sent to the motor.
Default: `0.0` |
| `max_power_pct` | number | Optional | Range is 0.06 to 1.0; sets a limit on maximum power percentage sent to the motor.
Default: `1.0` |
| `pwm_freq` | int | Optional | Sets the PWM pulse frequency in Hz. Many motors operate optimally in the kHz range.
Default: `800` |
-| `encoder` | string | Optional | The name of an encoder attached to this motor. See [encoded motor](/build/configure/components/motor/gpio/encoded-motor/). *If an encoder is configured on a `fake` motor, `ticks_per_rotation` becomes required.* |
-| `max_rpm` | number | Optional | An estimate of the max revolutions per minute (RPM) the motor will run at with full power under no load. The [`GoFor`](/build/configure/components/motor/#gofor) method calculates how much power to send to the motor as a percentage of `max_rpm`. If unknown, you can set it to 100, which will mean that giving 40 as the `rpm` argument to `GoFor` or `GoTo` will set it to 40% speed. *For non-encoded fake motors, this is required or a default is assigned.* |
+| `encoder` | string | Optional | The name of an encoder attached to this motor. See [encoded motor](/components/motor/gpio/encoded-motor/). *If an encoder is configured on a `fake` motor, `ticks_per_rotation` becomes required.* |
+| `max_rpm` | number | Optional | An estimate of the max revolutions per minute (RPM) the motor will run at with full power under no load. The [`GoFor`](/components/motor/#gofor) method calculates how much power to send to the motor as a percentage of `max_rpm`. If unknown, you can set it to 100, which will mean that giving 40 as the `rpm` argument to `GoFor` or `GoTo` will set it to 40% speed. *For non-encoded fake motors, this is required or a default is assigned.* |
| `ticks_per_rotation` | int | Optional | *Becomes required for calculations if an encoder is configured (unlike on a real motor).* For a stepper motor, the number of steps in one full rotation (200 is common). For an encoded motor, how many encoder ticks in one full rotation. See data sheet (for a real motor). |
| `dir_flip` | bool | Optional | Flips the direction of "forward" versus "backward" rotation.
Default: `false` |
| `pins` | object | Optional | A struct that holds pin configuration information. |
@@ -94,10 +94,10 @@ Nested within `pins`:
| Name | Type | Inclusion | Description |
| ---- | ---- | --------- | ----------- |
-| `a` | string | Optional | See [Pin Information](#pin-information). Corresponds to "IN1" on many driver data sheets. {{< glossary_tooltip term_id="pin-number" text="Pin number" >}} of the GPIO pin this is wired to on the [board](/build/configure/components/board/). |
-| `b` | string | Optional | See [Pin Information](#pin-information). Corresponds to "IN2" on many driver data sheets. {{< glossary_tooltip term_id="pin-number" text="Pin number" >}} of the GPIO pin this is wired to on the [board](/build/configure/components/board/). |
-| `dir` | string | Optional | See [Pin Information](#pin-information). {{< glossary_tooltip term_id="pin-number" text="Pin number" >}} of the GPIO pin this is wired to on the [board](/build/configure/components/board/). |
-|`pwm` | string | Optional | See [Pin Information](#pin-information). {{< glossary_tooltip term_id="pin-number" text="Pin number" >}} of the GPIO pin this is wired to on the [board](/build/configure/components/board/). |
+| `a` | string | Optional | See [Pin Information](#pin-information). Corresponds to "IN1" on many driver data sheets. {{< glossary_tooltip term_id="pin-number" text="Pin number" >}} of the GPIO pin this is wired to on the [board](/components/board/). |
+| `b` | string | Optional | See [Pin Information](#pin-information). Corresponds to "IN2" on many driver data sheets. {{< glossary_tooltip term_id="pin-number" text="Pin number" >}} of the GPIO pin this is wired to on the [board](/components/board/). |
+| `dir` | string | Optional | See [Pin Information](#pin-information). {{< glossary_tooltip term_id="pin-number" text="Pin number" >}} of the GPIO pin this is wired to on the [board](/components/board/). |
+|`pwm` | string | Optional | See [Pin Information](#pin-information). {{< glossary_tooltip term_id="pin-number" text="Pin number" >}} of the GPIO pin this is wired to on the [board](/components/board/). |
#### Pin Information
@@ -113,4 +113,4 @@ The driver data sheet (for a real, not fake, motor) will specify which one to us
Once your motor is configured and your robot is connected, go to the [**Control** tab](/fleet/machines/#control) and click on the motor's dropdown panel.
Use the buttons to try turning your motor forwards or backwards at different power levels and notice how the **Position** number changes.
-![Motor control panel.](/build/configure/components/motor/control.png)
+![Motor control panel.](/components/motor/control.png)
diff --git a/docs/build/configure/components/motor/gpio/_index.md b/docs/components/motor/gpio/_index.md
similarity index 86%
rename from docs/build/configure/components/motor/gpio/_index.md
rename to docs/components/motor/gpio/_index.md
index 543df77c55..a417ad06be 100644
--- a/docs/build/configure/components/motor/gpio/_index.md
+++ b/docs/components/motor/gpio/_index.md
@@ -12,10 +12,10 @@ aliases:
The `gpio` model supports [DC motors](https://en.wikipedia.org/wiki/DC_motor) (both brushed and brushless).
-[Encoders](/build/configure/components/encoder/) can be configured to work with `gpio` motors.
-Find more information in the [encoded motor documentation](/build/configure/components/motor/gpio/encoded-motor/).
+[Encoders](/components/encoder/) can be configured to work with `gpio` motors.
+Find more information in the [encoded motor documentation](/components/motor/gpio/encoded-motor/).
-To configure a DC motor as a component of your robot, first configure the [board](/build/configure/components/board/) to which the motor driver is wired.
+To configure a DC motor as a component of your robot, first configure the [board](/components/board/) to which the motor driver is wired.
Then add your motor:
{{< tabs name="gpio-config">}}
@@ -26,7 +26,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `motor` type, then select the `gpio` model.
Enter a name for your motor and click **Create**.
-![G P I O motor config in the builder UI with the In1 and In2 pins configured and the PWM pin field left blank.](/build/configure/components/motor/gpio-config-ui.png)
+![G P I O motor config in the builder UI with the In1 and In2 pins configured and the PWM pin field left blank.](/components/motor/gpio-config-ui.png)
Edit and fill in the attributes as applicable.
@@ -106,7 +106,7 @@ An example configuration for a `gpio` motor:
{{% /tab %}}
{{% tab name="Annotated JSON" %}}
-![Same example JSON as on the JSON example tab, with notes alongside it. See attribute table below for all the same information.](/build/configure/components/motor/motor-gpio-json.png)
+![Same example JSON as on the JSON example tab, with notes alongside it. See attribute table below for all the same information.](/components/motor/motor-gpio-json.png)
{{% /tab %}}
{{< /tabs >}}
@@ -116,14 +116,14 @@ The following attributes are available for `gpio` motors:
| Name | Type | Inclusion | Description |
| ---- | ---- | --------- | ----------- |
-| `board` | string | **Required** | `name` of the [board](/build/configure/components/board/) to which the motor driver is wired. |
-| `max_rpm` | int | **Required** | This is an estimate of the maximum RPM the motor will run at with full power under no load. The [`GoFor`](/build/configure/components/motor/#gofor) method calculates how much power to send to the motor as a percentage of `max_rpm`. If unknown, you can set it to 100, which will mean that giving 40 as the `rpm` argument to `GoFor` or `GoTo` will set it to 40% speed. ***Not required** or available for [encoded](/build/configure/components/motor/gpio/encoded-motor/) `gpio` motors.* |
+| `board` | string | **Required** | `name` of the [board](/components/board/) to which the motor driver is wired. |
+| `max_rpm` | int | **Required** | This is an estimate of the maximum RPM the motor will run at with full power under no load. The [`GoFor`](/components/motor/#gofor) method calculates how much power to send to the motor as a percentage of `max_rpm`. If unknown, you can set it to 100, which will mean that giving 40 as the `rpm` argument to `GoFor` or `GoTo` will set it to 40% speed. ***Not required** or available for [encoded](/components/motor/gpio/encoded-motor/) `gpio` motors.* |
| `pins` | object | **Required** | A structure that holds pin configuration information; [see below](#pins). |
| `min_power_pct` | number | Optional | Sets a limit on minimum power percentage sent to the motor.
Default: `0.0` |
| `max_power_pct` | number | Optional | Range is 0.06 to 1.0; sets a limit on maximum power percentage sent to the motor.
Default: `1.0` |
| `pwm_freq` | int | Optional | Sets the PWM pulse frequency in Hz. Many motors operate optimally in the kHz range.
Default: `800` |
| `dir_flip` | bool | Optional | Flips the direction of "forward" versus "backward" rotation. Default: `false` |
-| `encoder` | string | Optional | The name of an encoder attached to this motor. See [encoded motor](/build/configure/components/motor/gpio/encoded-motor/). |
+| `encoder` | string | Optional | The name of an encoder attached to this motor. See [encoded motor](/components/motor/gpio/encoded-motor/). |
Refer to your motor and motor driver data sheets for specifics.
@@ -173,7 +173,7 @@ Refer to your motor and motor driver data sheets for information on power requir
Taking a 12V brushed DC motor controlled by a [DRV8256E Single Brushed DC Motor Driver Carrier](https://www.pololu.com/product/4038) wired to a Raspberry Pi as an example, the wiring diagram would look like this:
-![An example wiring diagram showing a Raspberry Pi, 12V power supply, DRV8256E motor driver, and 12V brushed DC motor. The logic side of the driver is connected to the Pi's ground and 3.3V pins. The driver pin for PWM goes to pin 32 on the Pi and the direction pin goes to pin 36 on the Pi. The motor side of the motor driver is connected to the ground and 12V terminals of a power supply and the OUT1 and OUT2 pins go to the two terminals of the motor.](/build/configure/components/motor/motor-brushed-dc-wiring.png)
+![An example wiring diagram showing a Raspberry Pi, 12V power supply, DRV8256E motor driver, and 12V brushed DC motor. The logic side of the driver is connected to the Pi's ground and 3.3V pins. The driver pin for PWM goes to pin 32 on the Pi and the direction pin goes to pin 36 on the Pi. The motor side of the motor driver is connected to the ground and 12V terminals of a power supply and the OUT1 and OUT2 pins go to the two terminals of the motor.](/components/motor/motor-brushed-dc-wiring.png)
The signal wires in the diagram run from two GPIO pins on the Pi to the DIR and PWM pins on the motor driver.
Refer to a [Raspberry Pi pinout schematic](https://pinout.xyz/) to locate generic GPIO pins and determine their pin numbers for configuration.
@@ -188,7 +188,7 @@ Brushless motors typically have three power connections (commonly referred to as
The configuration file of a BLDC motor with Viam is the same as that of a brushed motor.
Only the output side of the driver board is different in that more wires connect the driver to the motor.
-![An example wiring diagram showing a Raspberry Pi, 12V power supply, RioRand 400W brushless DC motor controller, and 3 phase 12V brushless DC motor. The motor has three power wires (one for each phase) and five sensor wires (two to power the sensor and one for each of the three Hall effect sensors).](/build/configure/components/motor/motor-brushless-dc-wiring.png)
+![An example wiring diagram showing a Raspberry Pi, 12V power supply, RioRand 400W brushless DC motor controller, and 3 phase 12V brushless DC motor. The motor has three power wires (one for each phase) and five sensor wires (two to power the sensor and one for each of the three Hall effect sensors).](/components/motor/motor-brushless-dc-wiring.png)
{{< readfile "/static/include/components/test-control/motor-control.md" >}}
diff --git a/docs/build/configure/components/motor/gpio/encoded-motor.md b/docs/components/motor/gpio/encoded-motor.md
similarity index 77%
rename from docs/build/configure/components/motor/gpio/encoded-motor.md
rename to docs/components/motor/gpio/encoded-motor.md
index a2c46cc179..989f572beb 100644
--- a/docs/build/configure/components/motor/gpio/encoded-motor.md
+++ b/docs/components/motor/gpio/encoded-motor.md
@@ -10,15 +10,15 @@ aliases:
# SMEs: Rand, James
---
-Use an [encoder](/build/configure/components/encoder/) with a motor to create a closed feedback loop for better control of your robot.
+Use an [encoder](/components/encoder/) with a motor to create a closed feedback loop for better control of your robot.
Instead of sending speed or position commands without a way to verify the motor's behavior, the encoder lets the computer know how the motor is actually rotating in the real world, so adjustments can be made to achieve the desired motor movement.
Some motors come with encoders integrated with or attached to them.
You can also add an encoder to a motor.
-See the [encoder component documentation](/build/configure/components/encoder/) for more information on encoders.
+See the [encoder component documentation](/components/encoder/) for more information on encoders.
Viam supports `gpio` model motors with encoders.
-To configure an encoded motor, you must configure the encoder [per the encoder documentation](/build/configure/components/encoder/) and then configure a `gpio` motor with an `encoder` attribute in addition to the [standard `gpio` model attributes](/build/configure/components/motor/gpio/).
+To configure an encoded motor, you must configure the encoder [per the encoder documentation](/components/encoder/) and then configure a `gpio` motor with an `encoder` attribute in addition to the [standard `gpio` model attributes](/components/motor/gpio/).
{{< tabs >}}
@@ -26,7 +26,7 @@ To configure an encoded motor, you must configure the encoder [per the encoder d
Here’s an example configuration:
-![An encoded motor config in the Viam app UI.](/build/configure/components/motor/encoded-config-ui.png)
+![An encoded motor config in the Viam app UI.](/components/motor/encoded-config-ui.png)
{{% /tab %}}
{{% tab name="JSON Template" %}}
@@ -125,12 +125,12 @@ Here’s an example configuration:
{{% tab name="Annotated JSON" %}}
-![Same example JSON as on the JSON example tab, with notes alongside it. See attribute table below for all the same information.](/build/configure/components/motor/motor-encoded-dc-json.png)
+![Same example JSON as on the JSON example tab, with notes alongside it. See attribute table below for all the same information.](/components/motor/motor-encoded-dc-json.png)
{{% /tab %}}
{{< /tabs >}}
-In addition to the [attributes for a non-encoded motor](/build/configure/components/motor/gpio/), the following attributes are available for encoded DC motors:
+In addition to the [attributes for a non-encoded motor](/components/motor/gpio/), the following attributes are available for encoded DC motors:
| Name | Type | Inclusion | Description |
@@ -141,13 +141,13 @@ In addition to the [attributes for a non-encoded motor](/build/configure/compone
{{% alert title="Info" color="info" %}}
-The attribute [`max_rpm`](/build/configure/components/motor/gpio/) is not required or available for encoded `gpio` motors.
+The attribute [`max_rpm`](/components/motor/gpio/) is not required or available for encoded `gpio` motors.
{{% /alert %}}
{{% alert title="Important" color="note" %}}
-If `encoder` is model [`AM5-AS5048`](/build/configure/components/encoder/ams-as5048/),`ticks_per_rotation` must be `1`, as `AM5-AS5048` is an absolute encoder which provides angular measurements directly.
+If `encoder` is model [`AM5-AS5048`](/components/encoder/ams-as5048/),`ticks_per_rotation` must be `1`, as `AM5-AS5048` is an absolute encoder which provides angular measurements directly.
{{% /alert %}}
@@ -156,6 +156,6 @@ If `encoder` is model [`AM5-AS5048`](/build/configure/components/encoder/ams-as5
Here's an example of an encoded DC motor wired with [the MAX14870 Single Brushed DC Motor Driver Carrier](https://www.pololu.com/product/2961).
This wiring example corresponds to the [example config above](#encoder-config).
-![Example wiring diagram with a Raspberry Pi, brushed DC motor, 12V power supply, and Pololu MAX14870 motor driver. The DIR pin of the driver is wired to pin 18 on the Pi. PWM goes to pin 16. The motor's encoder signal wires (out a and out b) go to pins 11 and 13 on the Pi. The motor's main power wires are connected to the motor driver while its encoder logic power wires are connected to the Pi.](/build/configure/components/motor/motor-encoded-dc-wiring.png)
+![Example wiring diagram with a Raspberry Pi, brushed DC motor, 12V power supply, and Pololu MAX14870 motor driver. The DIR pin of the driver is wired to pin 18 on the Pi. PWM goes to pin 16. The motor's encoder signal wires (out a and out b) go to pins 11 and 13 on the Pi. The motor's main power wires are connected to the motor driver while its encoder logic power wires are connected to the Pi.](/components/motor/motor-encoded-dc-wiring.png)
{{< readfile "/static/include/components/test-control/motor-control.md" >}}
diff --git a/docs/build/configure/components/motor/gpiostepper.md b/docs/components/motor/gpiostepper.md
similarity index 87%
rename from docs/build/configure/components/motor/gpiostepper.md
rename to docs/components/motor/gpiostepper.md
index 53c54eea9c..e551c30110 100644
--- a/docs/build/configure/components/motor/gpiostepper.md
+++ b/docs/components/motor/gpiostepper.md
@@ -16,7 +16,7 @@ The `gpiostepper` model of the motor component supports bipolar [stepper motors]
Viam also supports some more advanced stepper driver chips ([TMC5072](../tmc5072/), [DMC4000](../dmc4000/)) that have their own microcontrollers that handle things like speed and acceleration control.
{{< /alert >}}
-To configure a `gpiostepper` motor as a component of your robot, first configure the [board](/build/configure/components/board/) to which the motor driver is wired.
+To configure a `gpiostepper` motor as a component of your robot, first configure the [board](/components/board/) to which the motor driver is wired.
Then, add the motor:
{{< tabs name="gpiostepper-config">}}
@@ -27,7 +27,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `motor` type, then select the `gpiostepper` model.
Enter a name for your motor and click **Create**.
-![Screenshot of a gpiostepper motor config with the step and dir pins configured to pins 13 and 15.](/build/configure/components/motor/gpiostepper-config-ui.png)
+![Screenshot of a gpiostepper motor config with the step and dir pins configured to pins 13 and 15.](/components/motor/gpiostepper-config-ui.png)
Edit and fill in the attributes as applicable.
@@ -100,7 +100,7 @@ Here’s an example of a basic stepper driver config:
{{% /tab %}}
{{% tab name="Annotated JSON" %}}
-![motor-gpiostepper-json.](/build/configure/components/motor/motor-gpiostepper-json.png)
+![motor-gpiostepper-json.](/components/motor/motor-gpiostepper-json.png)
{{% /tab %}}
{{< /tabs >}}
@@ -110,8 +110,8 @@ The following attributes are available for `gpiostepper` motors:
| Name | Type | Inclusion | Description |
| ---- | ---- | --------- | ---------- |
-| `board` | string | **Required** | `name` of the [board](/build/configure/components/board/) the motor driver is wired to. |
-| `pins` | object | **Required** | A struct containing the [board](/build/configure/components/board/) {{< glossary_tooltip term_id="pin-number" text="pin numbers" >}} that the `step` and `dir` pins of the motor driver are wired to. |
+| `board` | string | **Required** | `name` of the [board](/components/board/) the motor driver is wired to. |
+| `pins` | object | **Required** | A struct containing the [board](/components/board/) {{< glossary_tooltip term_id="pin-number" text="pin numbers" >}} that the `step` and `dir` pins of the motor driver are wired to. |
| `ticks_per_rotation` | int | **Required** | Number of full steps in a rotation. 200 (equivalent to 1.8 degrees per step) is very common. If your data sheet specifies this in terms of degrees per step, divide 360 by that number to get ticks per rotation. |
| `stepper_delay` | int | Optional | Time in microseconds to remain high for each step. |
@@ -126,7 +126,7 @@ Refer to your motor data sheet and motor driver data sheet for correct wiring.
The following example uses a Big Tree Tech breakout board with a [TMC2209 integrated circuit](https://www.trinamic.com/products/integrated-circuits/details/tmc2209-la/) to drive a two phase stepper motor.
-![An example wiring diagram for a four wire Nema 17 stepper motor driven by a Big Tree Tech TMC2209 stepper driver. The driver is connected to a Raspberry Pi with step and dir pins, as well as logic power wires. A separate 12V power supply is attached to the motor driver to power the motor.](/build/configure/components/motor/motor-gpiostepper-wiring.png)
+![An example wiring diagram for a four wire Nema 17 stepper motor driven by a Big Tree Tech TMC2209 stepper driver. The driver is connected to a Raspberry Pi with step and dir pins, as well as logic power wires. A separate 12V power supply is attached to the motor driver to power the motor.](/components/motor/motor-gpiostepper-wiring.png)
In this particular example the enable pin on the upper left corner of the driver is connected to ground to pull it low.
See the data sheet of your stepper motor and stepper motor driver for information on how to wire your specific hardware.
diff --git a/docs/build/configure/components/motor/roboclaw.md b/docs/components/motor/roboclaw.md
similarity index 94%
rename from docs/build/configure/components/motor/roboclaw.md
rename to docs/components/motor/roboclaw.md
index b87898b3a6..7b489ab346 100644
--- a/docs/build/configure/components/motor/roboclaw.md
+++ b/docs/components/motor/roboclaw.md
@@ -31,7 +31,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `motor` type, then select the `roboclaw` model.
Enter a name for your motor and click **Create**.
-![A roboclaw motor config.](/build/configure/components/motor/roboclaw-ui-config.png)
+![A roboclaw motor config.](/components/motor/roboclaw-ui-config.png)
Edit and fill in the attributes as applicable.
@@ -96,7 +96,7 @@ The following attributes are available for `roboclaw` motors:
| `serial_baud_rate` | int | Optional | [Rate to send data](https://learn.sparkfun.com/tutorials/serial-communication) over the serial line. This must match the baudrate you have set up using basicmicro's setup program. You cannot have multiple `roboclaw` motors with different baud rates.
Default: `38400` |
| `motor_channel` | int | **Required** | Channel the motor is connected to on the controller. Must be `1` or `2`. |
| `address` | int | Optional | Serial address of the controller.
Default: `128` |
-| `ticks_per_rotation` | int | Optional | Number of full steps in a rotation. Update this if you connect [encoders](/build/configure/components/encoder/) to your controller through its EN1 and EN2 pins.
Default: `0` |
+| `ticks_per_rotation` | int | Optional | Number of full steps in a rotation. Update this if you connect [encoders](/components/encoder/) to your controller through its EN1 and EN2 pins.
Default: `0` |
Refer to your motor and motor driver data sheets for specifics.
diff --git a/docs/build/configure/components/motor/tmc5072.md b/docs/components/motor/tmc5072.md
similarity index 90%
rename from docs/build/configure/components/motor/tmc5072.md
rename to docs/components/motor/tmc5072.md
index 42ba6eee1a..7ffa632562 100644
--- a/docs/build/configure/components/motor/tmc5072.md
+++ b/docs/components/motor/tmc5072.md
@@ -12,9 +12,9 @@ aliases:
This model supports stepper motors controlled by the [TMC5072 chip](https://www.trinamic.com/support/eval-kits/details/tmc5072-bob/).
-Whereas a basic low-level stepper driver supported by the [`gpiostepper` model](/build/configure/components/motor/gpiostepper/) sends power to a stepper motor based on PWM signals from GPIO pins, the TMC5072 chip uses SPI bus to communicate with the board, does some processing on the chip itself, and provides convenient features including StallGuard2TM.
+Whereas a basic low-level stepper driver supported by the [`gpiostepper` model](/components/motor/gpiostepper/) sends power to a stepper motor based on PWM signals from GPIO pins, the TMC5072 chip uses SPI bus to communicate with the board, does some processing on the chip itself, and provides convenient features including StallGuard2TM.
-To configure a `TMC5072` motor as a component of your robot, first configure the [board](/build/configure/components/board/) to which the motor driver is wired.
+To configure a `TMC5072` motor as a component of your robot, first configure the [board](/components/board/) to which the motor driver is wired.
Then, add the motor:
{{< tabs >}}
@@ -25,7 +25,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `motor` type, then select the `TMC5072` model.
Enter a name for your motor and click **Create**.
-![Config panel for a TMC5072 motor with attributes filled in according to the Raw JSON tab.](/build/configure/components/motor/tmc5072-config-ui.png)
+![Config panel for a TMC5072 motor with attributes filled in according to the Raw JSON tab.](/components/motor/tmc5072-config-ui.png)
Edit and fill in the attributes as applicable.
@@ -107,8 +107,8 @@ The following attributes are available for `TMC5072` motors:
| Name | Type | Inclusion | Description |
| ---- | ---- | --------- | ----------- |
-| `board` | string | **Required** | `name` of the [board](/build/configure/components/board/) to which the motor controller is wired. |
-| `spi_bus` | string | **Required** | The board [SPI bus](/build/configure/components/board/#spis) over which the TMC chip communicates with the board. |
+| `board` | string | **Required** | `name` of the [board](/components/board/) to which the motor controller is wired. |
+| `spi_bus` | string | **Required** | The board [SPI bus](/components/board/#spis) over which the TMC chip communicates with the board. |
|`chip_select` | string | **Required** | The {{< glossary_tooltip term_id="pin-number" text="pin number" >}} of the GPIO pin on the board wired to the TMC controller. The board sets this high or low to let the TMC chip know whether to listen for commands over SPI. |
| `index` | int | **Required** | The index of the part of the chip the motor is wired to. Either `1` or `2`, depending on whether the motor is wired to the "MOTOR1" terminals or the "MOTOR2" terminals, respectively. |
| `ticks_per_rotation` | int | **Required** | Number of full steps in a rotation. 200 (equivalent to 1.8 degrees per step) is very common. If your data sheet specifies this in terms of degrees per step, divide 360 by that number to get ticks per rotation. |
diff --git a/docs/build/configure/components/movement-sensor/_index.md b/docs/components/movement-sensor/_index.md
similarity index 98%
rename from docs/build/configure/components/movement-sensor/_index.md
rename to docs/components/movement-sensor/_index.md
index a666b8b4d2..7713b09168 100644
--- a/docs/build/configure/components/movement-sensor/_index.md
+++ b/docs/components/movement-sensor/_index.md
@@ -20,7 +20,7 @@ Examples of movement sensors include global positioning systems (GPS), inertial
{{% alert title="Tip" color="tip" %}}
-Viam also supports generic [sensors](/build/configure/components/sensor/) and [encoders](/build/configure/components/encoder/).
+Viam also supports generic [sensors](/components/sensor/) and [encoders](/components/encoder/).
{{% /alert %}}
@@ -52,10 +52,10 @@ Model | Description
[`gps-nmea-rtk-serial`](./gps/gps-nmea-rtk-serial/) | [NTRIP-based](https://en.wikipedia.org/wiki/Networked_Transport_of_RTCM_via_Internet_Protocol) [RTK](https://en.wikipedia.org/wiki/Real-time_kinematic_positioning) GPS models using serial communication (**experimental**)
[`imu-wit`](./imu/imu-wit/) | IMUs manufactured by [WitMotion](https://www.wit-motion.com/)
[`accel-adxl345`](./adxl345/) | The [Analog Devices ADXL345](https://www.analog.com/en/products/adxl345.html) digital accelerometer
-[`viam_visual_odometry`](./viam-visual-odometry/) | A [modular resource](/registry/) that derives movement data from a [camera](/build/configure/components/camera/) stream
+[`viam_visual_odometry`](./viam-visual-odometry/) | A [modular resource](/registry/) that derives movement data from a [camera](/components/camera/) stream
[`gyro-mpu6050`](./mpu6050/) | A gyroscope/accelerometer manufactured by TDK InvenSense
[`merged`](./merged/) | A model that allows you to aggregate the API methods supported by multiple sensors into a singular sensor client, effectively merging the models of the individual resources
-[`wheeled-odometry`](./wheeled-odometry/) | A model that uses [encoders](/build/configure/components/encoder/) to get an odometry estimate from a wheeled base
+[`wheeled-odometry`](./wheeled-odometry/) | A model that uses [encoders](/components/encoder/) to get an odometry estimate from a wheeled base
[`fake`](./fake/) | Used to test code without hardware
### Modular Resources
@@ -774,7 +774,7 @@ You can also ask questions on the [Viam Community Slack](https://join.slack.com/
## Next Steps
-Try adding a movement sensor to your [mobile robot](/build/configure/components/base/) and writing some code with our [SDKs](/build/program/apis/) to implement closed-loop movement control for your robot.
+Try adding a movement sensor to your [mobile robot](/components/base/) and writing some code with our [SDKs](/build/program/apis/) to implement closed-loop movement control for your robot.
Or, try configuring [data capture](/data/) on your movement sensor.
diff --git a/docs/build/configure/components/movement-sensor/adxl345.md b/docs/components/movement-sensor/adxl345.md
similarity index 87%
rename from docs/build/configure/components/movement-sensor/adxl345.md
rename to docs/components/movement-sensor/adxl345.md
index 70e8b2bcc7..ed88800274 100644
--- a/docs/build/configure/components/movement-sensor/adxl345.md
+++ b/docs/components/movement-sensor/adxl345.md
@@ -23,7 +23,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `movement-sensor` type, then select the `accel-adxl345` model.
Enter a name for your movement sensor and click **Create**.
-{{< imgproc src="/build/configure/components/movement-sensor/adxl345-builder.png" alt="Creation of an `accel-adxl345` movement sensor in the Viam app config builder." resize="600x" >}}
+{{< imgproc src="/components/movement-sensor/adxl345-builder.png" alt="Creation of an `accel-adxl345` movement sensor in the Viam app config builder." resize="600x" >}}
Copy and paste the following attribute template into your movement sensor's **Attributes** box.
Then remove and fill in the attributes as applicable to your movement sensor, according to the table below.
@@ -133,7 +133,7 @@ Then remove and fill in the attributes as applicable to your movement sensor, ac
| ---- | ------ | ------------ | ----------- |
| `i2c_bus` | string | **Required** | The index of the I2C bus on the board your device is connected to. Often a number.
Example: "2" |
| `use_alternate_i2c_address` | bool | Optional | Depends on whether you wire SDO low (leaving the default address of 0x53) or high (making the address 0x1D). If high, set true. If low, set false or omit the attribute.
Default: `false` |
-| `board` | string | Optional | The `name` of the [board](/build/configure/components/board/) to which the device is wired. Only needed if you've configured any [interrupt](/build/configure/components/board/#digital_interrupts) functionality. |
+| `board` | string | Optional | The `name` of the [board](/components/board/) to which the device is wired. Only needed if you've configured any [interrupt](/components/board/#digital_interrupts) functionality. |
| `tap` | object | Optional | Holds the configuration values necessary to use the tap detection interrupt on the ADXL345. See [Tap attributes](#tap-attributes). |
| `free_fall` | object | Optional | Holds the configuration values necessary to use the free-fall detection interrupt on the ADXL345. See [Freefall attributes](#freefall-attributes). |
@@ -145,7 +145,7 @@ Inside the `tap` object, you can include the following attributes:
| Name | Type | Inclusion | Description |
| ------------------- | ------ | ------------ | ----------- |
| `accelerometer_pin` | int | **Required** | On the accelerometer you can choose to send the interrupts to int1 or int2. Specify this by setting this config value to `1` or `2`. |
-| `interrupt_pin` | string | **Required** | The `name` of the [digital interrupt](/build/configure/components/board/#digital_interrupts) you configured for the pin on the [board](/build/configure/components/board/) wired to the `accelerometer_pin`. |
+| `interrupt_pin` | string | **Required** | The `name` of the [digital interrupt](/components/board/#digital_interrupts) you configured for the pin on the [board](/components/board/) wired to the `accelerometer_pin`. |
| `exclude_x` | bool | Optional | Tap detection defaults to all three axes. Exclude the x axis by setting this to true.
Default: `false` |
| `exclude_y` | bool | Optional | Tap detection defaults to all three axes. Exclude the y axis by setting this to true.
Default: `false` |
| `exclude_z` | bool | Optional | Tap detection defaults to all three axes. Exclude the z axis by setting this to true.
Default: `false` |
@@ -160,7 +160,7 @@ Inside the `freefall` object, you can include the following attributes:
| Name | Type | Inclusion | Default Value | Description |
| ------------------- | ------ | ------------ | ------------- | ----------- |
| `accelerometer_pin` | int | **Required** | On the accelerometer you can choose to send the interrupts to int1 or int2. Specify this by setting this config value to `1` or `2`. |
-| `interrupt_pin` | string | **Required** | The `name` of the [digital interrupt](/build/configure/components/board/#digital_interrupts) you configured for the pin on the [board](/build/configure/components/board/) wired to the `accelerometer_pin`. |
+| `interrupt_pin` | string | **Required** | The `name` of the [digital interrupt](/components/board/#digital_interrupts) you configured for the pin on the [board](/components/board/) wired to the `accelerometer_pin`. |
| `threshold` | float | Optional | The acceleration on each axis is compared with this value to determine if a free-fall event occurred (in milligrams, between `0` and `15,937`).
Default: `437.5` |
| `time_ms` | float | Optional | Unsigned time value representing the minimum time that the value of all axes must be less than `threshold` to generate a free-fall interrupt (in milliseconds, between 0 and 1,275).
Default: `160` |
@@ -169,4 +169,4 @@ Inside the `freefall` object, you can include the following attributes:
After you configure your movement sensor, navigate to the [Control tab](/fleet/machines/#control) and select the dedicated movement sensor dropdown panel.
This panel presents the data collected by the movement sensor.
-{{}}
+{{}}
diff --git a/docs/build/configure/components/movement-sensor/cameramono.md b/docs/components/movement-sensor/cameramono.md
similarity index 93%
rename from docs/build/configure/components/movement-sensor/cameramono.md
rename to docs/components/movement-sensor/cameramono.md
index 89e780e6d8..a203d6f076 100644
--- a/docs/build/configure/components/movement-sensor/cameramono.md
+++ b/docs/components/movement-sensor/cameramono.md
@@ -20,7 +20,7 @@ Breaking changes are likely to occur, and occur often.
{{% /alert %}}
The `camera_mono` movement sensor model is an **experimental** model that uses a visual odometry algorithm with dead reckoning to track the position, orientation, linear velocity and angular velocity of the camera's frame.
-The `camera_mono` model can use any single [camera](/build/configure/components/camera/) within its algorithm.
+The `camera_mono` model can use any single [camera](/components/camera/) within its algorithm.
{{< tabs >}}
{{% tab name="Config Builder" %}}
@@ -98,7 +98,7 @@ Edit and fill in the attributes as applicable.
| Name | Type | Inclusion | Description |
| -------------------------- | ------ | ------------ | ----------- |
-| `camera` | string | **Required** | The `name` of the [camera](/build/configure/components/camera/) you want to use for visual odometry. |
+| `camera` | string | **Required** | The `name` of the [camera](/components/camera/) you want to use for visual odometry. |
| `motion_estimation_config` | object | **Required** | See [motionestimation.go in RDK](https://github.com/viamrobotics/rdk/blob/99f62a1640f4c267b744bdfc2924e9fd4f7a3c60/vision/odometry/motionestimation.go). |
## Test the movement sensor
diff --git a/docs/build/configure/components/movement-sensor/fake.md b/docs/components/movement-sensor/fake.md
similarity index 85%
rename from docs/build/configure/components/movement-sensor/fake.md
rename to docs/components/movement-sensor/fake.md
index 1e4972af9b..ebb525c278 100644
--- a/docs/build/configure/components/movement-sensor/fake.md
+++ b/docs/components/movement-sensor/fake.md
@@ -23,7 +23,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `movement-sensor` type, then select the `fake` model.
Enter a name for your movement sensor and click **Create**.
-{{< imgproc src="/build/configure/components/movement-sensor/fake-builder.png" alt="Creation of an `fake` movement sensor in the Viam app config builder." resize="600x" >}}
+{{< imgproc src="/components/movement-sensor/fake-builder.png" alt="Creation of an `fake` movement sensor in the Viam app config builder." resize="600x" >}}
Edit and fill in the attributes as applicable.
@@ -70,4 +70,4 @@ After you configure your movement sensor, navigate to the [Control tab](/fleet/m
This panel presents the data collected by the movement sensor.
The sections in the panel include the position, orientation, angular velocity, linear velocity, and linear acceleration.
-{{}}
+{{}}
diff --git a/docs/build/configure/components/movement-sensor/gps/_index.md b/docs/components/movement-sensor/gps/_index.md
similarity index 74%
rename from docs/build/configure/components/movement-sensor/gps/_index.md
rename to docs/components/movement-sensor/gps/_index.md
index 25ecf65c45..3469f83008 100644
--- a/docs/build/configure/components/movement-sensor/gps/_index.md
+++ b/docs/components/movement-sensor/gps/_index.md
@@ -5,7 +5,7 @@ weight: 15
type: "docs"
empty_node: true
layout: "empty"
-canonical: "build/configure/components/movement-sensor/"
+canonical: "components/movement-sensor/"
aliases:
- "/components/movement-sensor/gps/"
# SMEs: Rand
diff --git a/docs/build/configure/components/movement-sensor/gps/gps-nmea-rtk-pmtk.md b/docs/components/movement-sensor/gps/gps-nmea-rtk-pmtk.md
similarity index 92%
rename from docs/build/configure/components/movement-sensor/gps/gps-nmea-rtk-pmtk.md
rename to docs/components/movement-sensor/gps/gps-nmea-rtk-pmtk.md
index 4ad633b6cb..135a688358 100644
--- a/docs/build/configure/components/movement-sensor/gps/gps-nmea-rtk-pmtk.md
+++ b/docs/components/movement-sensor/gps/gps-nmea-rtk-pmtk.md
@@ -20,12 +20,12 @@ Breaking changes are likely to occur, and occur often.
A global positioning system (GPS) receives signals from satellites in the earth’s orbit to determine where it is and how fast it is going.
All supported GPS models provide data for the `Position`, `CompassHeading` and `LinearVelocity` methods.
-You can obtain fix and correction data by using the sensor `GetReadings` method, which is available because GPSes wrap the [sensor component](/build/configure/components/sensor/).
+You can obtain fix and correction data by using the sensor `GetReadings` method, which is available because GPSes wrap the [sensor component](/components/sensor/).
The `gps-nmea-rtk-pmtk` and [`gps-nmea-rtk-serial`](../gps-nmea-rtk-serial/) movement sensor models support [NTRIP-based](https://en.wikipedia.org/wiki/Networked_Transport_of_RTCM_via_Internet_Protocol) [real time kinematic positioning (RTK)](https://en.wikipedia.org/wiki/Real-time_kinematic_positioning) GPS units ([such as these](https://www.sparkfun.com/rtk)).
The chip requires a correction source to get to the required positional accuracy.
-The `gps-nmea-rtk-pmtk` model uses an over-the-internet correction source and sends the data over I2C to the [board](/build/configure/components/board/).
+The `gps-nmea-rtk-pmtk` model uses an over-the-internet correction source and sends the data over I2C to the [board](/components/board/).
{{% alert title="Tip" color="tip" %}}
@@ -41,7 +41,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `movement-sensor` type, then select the `gps-nmea-rtk-pmtk` model.
Enter a name for your movement sensor and click **Create**.
-{{< imgproc src="/build/configure/components/movement-sensor/gps-nmea-rtk-pmtk-builder.png" alt="Creation of a `gps-nmea-rtk-pmtk` movement sensor in the Viam app config builder." resize="600x" >}}
+{{< imgproc src="/components/movement-sensor/gps-nmea-rtk-pmtk-builder.png" alt="Creation of a `gps-nmea-rtk-pmtk` movement sensor in the Viam app config builder." resize="600x" >}}
Copy and paste the following attribute template into your movement sensor's **Attributes** box.
Then remove and fill in the attributes as applicable to your movement sensor, according to the table below.
@@ -147,9 +147,9 @@ The following attributes are available for a `gps-nmea-rtk-pmtk` movement sensor
| Name | Type | Inclusion | Description |
| ------------------------ | ------ | ------------ | ----------- |
-| `board` | string | **Required** | The `name` of the [board](/build/configure/components/board/) connected to the sensor with [I2C](/build/configure/components/board/#i2cs). |
+| `board` | string | **Required** | The `name` of the [board](/components/board/) connected to the sensor with [I2C](/components/board/#i2cs). |
| `i2c_addr` | int | **Required** | The device's I2C address. |
-| `i2c_bus` | string | **Required** | The name of the [I2C bus](/build/configure/components/board/#i2cs) wired to the sensor. |
+| `i2c_bus` | string | **Required** | The name of the [I2C bus](/components/board/#i2cs) wired to the sensor. |
| `i2c_baud_rate` | int | Optional | The rate at which data is sent from the sensor. Optional.
Default: `38400` |
| `ntrip_url` | string | **Required** | The URL of the NTRIP server from which you get correction data. Connects to a base station (maintained by a third party) for RTK corrections. |
| `ntrip_username` | string | Optional | Username for the NTRIP server. |
diff --git a/docs/build/configure/components/movement-sensor/gps/gps-nmea-rtk-serial.md b/docs/components/movement-sensor/gps/gps-nmea-rtk-serial.md
similarity index 95%
rename from docs/build/configure/components/movement-sensor/gps/gps-nmea-rtk-serial.md
rename to docs/components/movement-sensor/gps/gps-nmea-rtk-serial.md
index 0990a6f4ea..c612881050 100644
--- a/docs/build/configure/components/movement-sensor/gps/gps-nmea-rtk-serial.md
+++ b/docs/components/movement-sensor/gps/gps-nmea-rtk-serial.md
@@ -21,12 +21,12 @@ Breaking changes are likely to occur, and occur often.
A global positioning system (GPS) receives signals from satellites in the earth’s orbit to determine where it is and how fast it is going.
All supported GPS models provide data for the `Position`, `CompassHeading` and `LinearVelocity` methods.
-You can obtain fix and correction data by using the sensor `GetReadings` method, which is available because GPSes wrap the [sensor component](/build/configure/components/sensor/).
+You can obtain fix and correction data by using the sensor `GetReadings` method, which is available because GPSes wrap the [sensor component](/components/sensor/).
The `gps-nmea-rtk-serial` and [`gps-nmea-rtk-pmtk`](../gps-nmea-rtk-pmtk/) movement sensor models support [NTRIP-based](https://en.wikipedia.org/wiki/Networked_Transport_of_RTCM_via_Internet_Protocol) [real time kinematic positioning (RTK)](https://en.wikipedia.org/wiki/Real-time_kinematic_positioning) GPS units ([such as these](https://www.sparkfun.com/rtk)).
The chip requires a correction source to get to the required positional accuracy.
-The `gps-nmea-rtk-serial` model uses an over-the-internet correction source and sends the data over a serial connection to the [board](/build/configure/components/board/).
+The `gps-nmea-rtk-serial` model uses an over-the-internet correction source and sends the data over a serial connection to the [board](/components/board/).
{{% alert title="Tip" color="tip" %}}
@@ -42,7 +42,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `movement-sensor` type, then select the `gps-nmea-rtk-serial` model.
Enter a name for your movement sensor and click **Create**.
-{{< imgproc src="/build/configure/components/movement-sensor/gps-nmea-rtk-serial-builder.png" alt="Creation of a `gps-nmea-rtk-serial` movement sensor in the Viam app config builder." resize="600x" >}}
+{{< imgproc src="/components/movement-sensor/gps-nmea-rtk-serial-builder.png" alt="Creation of a `gps-nmea-rtk-serial` movement sensor in the Viam app config builder." resize="600x" >}}
Copy and paste the following attribute template into your movement sensor's **Attributes** box.
Then remove and fill in the attributes as applicable to your movement sensor, according to the table below.
diff --git a/docs/build/configure/components/movement-sensor/gps/gps-nmea.md b/docs/components/movement-sensor/gps/gps-nmea.md
similarity index 93%
rename from docs/build/configure/components/movement-sensor/gps/gps-nmea.md
rename to docs/components/movement-sensor/gps/gps-nmea.md
index 5db5e004ad..8f2106c77b 100644
--- a/docs/build/configure/components/movement-sensor/gps/gps-nmea.md
+++ b/docs/components/movement-sensor/gps/gps-nmea.md
@@ -12,7 +12,7 @@ aliases:
A global positioning system (GPS) receives signals from satellites in the earth’s orbit to determine where it is and how fast it is going.
All supported GPS models provide data for the `Position`, `CompassHeading` and `LinearVelocity` methods.
-You can obtain fix and correction data by using the sensor `GetReadings` method, which is available because GPSes wrap the [sensor component](/build/configure/components/sensor/).
+You can obtain fix and correction data by using the sensor `GetReadings` method, which is available because GPSes wrap the [sensor component](/components/sensor/).
The `gps-nmea` movement sensor model supports [NMEA-based](https://en.wikipedia.org/wiki/NMEA_0183) GPS units.
@@ -27,7 +27,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `movement-sensor` type, then select the `gps-nmea` model.
Enter a name for your movement sensor and click **Create**.
-{{< imgproc src="/build/configure/components/movement-sensor/gps-nmea-builder.png" alt="Creation of a `gps-nmea` movement sensor in the Viam app config builder." resize="600x" >}}
+{{< imgproc src="/components/movement-sensor/gps-nmea-builder.png" alt="Creation of a `gps-nmea` movement sensor in the Viam app config builder." resize="600x" >}}
Copy and paste the following attribute template into your movement sensor's **Attributes** box.
Then remove and fill in the attributes as applicable to your movement sensor, according to the table below.
@@ -181,7 +181,7 @@ The `"serial_path"` filepath on a macOS system might resemble "/dev/ttyUSB
### Connection Attributes
You need to configure attributes to specify how the GPS connects to your computer.
-You can use either serial communication (over USB) or I2C communication (through pins to a [board](/build/configure/components/board/)).
+You can use either serial communication (over USB) or I2C communication (through pins to a [board](/components/board/)).
Use `connection_type` to specify `"serial"` or `"I2C"` connection in the main `attributes` config.
Then create a struct within `attributes` for either `serial_attributes` or `i2c_attributes`, respectively.
@@ -210,8 +210,8 @@ For a movement sensor communicating over I2C, you'll need a `i2c_attr
| Name | Type | Inclusion | Description |
| --------------- | ------ | ------------ | ------------------------ |
-| `board` | string | **Required** | The `name` of the [board](/build/configure/components/board/) to which the [I2C](/build/configure/components/board/#i2cs) connection is being made. |
-| `i2c_bus` | string | **Required** | The name of the [I2C bus](/build/configure/components/board/#i2cs) wired to the sensor. |
+| `board` | string | **Required** | The `name` of the [board](/components/board/) to which the [I2C](/components/board/#i2cs) connection is being made. |
+| `i2c_bus` | string | **Required** | The name of the [I2C bus](/components/board/#i2cs) wired to the sensor. |
| `i2c_addr` | int | **Required** | The device's I2C address. |
| `i2c_baud_rate` | int | Optional | The rate at which data is sent from the sensor. Optional.
Default: `38400` |
diff --git a/docs/build/configure/components/movement-sensor/imu/_index.md b/docs/components/movement-sensor/imu/_index.md
similarity index 65%
rename from docs/build/configure/components/movement-sensor/imu/_index.md
rename to docs/components/movement-sensor/imu/_index.md
index e0f9a38feb..1e294b53dc 100644
--- a/docs/build/configure/components/movement-sensor/imu/_index.md
+++ b/docs/components/movement-sensor/imu/_index.md
@@ -5,5 +5,5 @@ weight: 16
type: "docs"
empty_node: true
layout: "empty"
-canonical: "build/configure/components/movement-sensor/"
+canonical: "components/movement-sensor/"
---
diff --git a/docs/build/configure/components/movement-sensor/imu/imu-vectornav.md b/docs/components/movement-sensor/imu/imu-vectornav.md
similarity index 89%
rename from docs/build/configure/components/movement-sensor/imu/imu-vectornav.md
rename to docs/components/movement-sensor/imu/imu-vectornav.md
index bc091cfdc3..c6add9a151 100644
--- a/docs/build/configure/components/movement-sensor/imu/imu-vectornav.md
+++ b/docs/components/movement-sensor/imu/imu-vectornav.md
@@ -12,7 +12,7 @@ aliases:
---
An [inertial measurement unit (IMU)](https://en.wikipedia.org/wiki/Inertial_measurement_unit) provides data for the `AngularVelocity`, `Orientation`, `CompassHeading`, and `LinearAcceleration` methods.
-Acceleration and magnetometer data are available by using the [sensor](/build/configure/components/sensor/) `GetReadings` method, which IMUs wrap.
+Acceleration and magnetometer data are available by using the [sensor](/components/sensor/) `GetReadings` method, which IMUs wrap.
The `imu-vectornav` movement sensor model supports IMUs manufactured by [VectorNav](https://www.vectornav.com/products) that support SPI connection.
@@ -24,7 +24,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `movement-sensor` type, then select the `imu-vectornav` model.
Enter a name for your movement sensor and click **Create**.
-{{< imgproc src="/build/configure/components/movement-sensor/imu-vectornav-builder.png" alt="Creation of an `imu-vectornav` movement sensor in the Viam app config builder." resize="600x" >}}
+{{< imgproc src="/components/movement-sensor/imu-vectornav-builder.png" alt="Creation of an `imu-vectornav` movement sensor in the Viam app config builder." resize="600x" >}}
Copy and paste the following attribute template into your movement sensor's **Attributes** box.
Then remove and fill in the attributes as applicable to your movement sensor, according to the table below.
@@ -113,8 +113,8 @@ Then remove and fill in the attributes as applicable to your movement sensor, ac
| Name | Type | Inclusion | Description |
| ---------------------- | ------ | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `board` | string | **Required** | The `name` of the [board](/build/configure/components/board/) to which the device is wired. |
-| `spi` | string | | The `name` of the [SPI bus](/build/configure/components/board/#spis) over which the device communicates with the board. |
+| `board` | string | **Required** | The `name` of the [board](/components/board/) to which the device is wired. |
+| `spi` | string | | The `name` of the [SPI bus](/components/board/#spis) over which the device communicates with the board. |
| `chip_select_pin` | string | **Required** | The ({{< glossary_tooltip term_id="pin-number" text="pin number" >}}) of the pin on the board (other than the SPI bus pins) connected to the IMU chip. Used to tell the chip whether the current SPI message is meant for it or for another device. |
| `spi_baud_rate` | int | **Required** | The rate at which data is sent from the IMU.
Default: `115200` |
| `polling_frequency_hz` | int | **Required** | How many times per second the sensor is polled. |
diff --git a/docs/build/configure/components/movement-sensor/imu/imu-wit.md b/docs/components/movement-sensor/imu/imu-wit.md
similarity index 94%
rename from docs/build/configure/components/movement-sensor/imu/imu-wit.md
rename to docs/components/movement-sensor/imu/imu-wit.md
index 187e494d7d..dcffd0927a 100644
--- a/docs/build/configure/components/movement-sensor/imu/imu-wit.md
+++ b/docs/components/movement-sensor/imu/imu-wit.md
@@ -11,7 +11,7 @@ aliases:
---
An [inertial measurement unit (IMU)](https://en.wikipedia.org/wiki/Inertial_measurement_unit) provides data for the `AngularVelocity`, `Orientation`, `CompassHeading`, and `LinearAcceleration` methods.
-Acceleration and magnetometer data are available by using the [sensor](/build/configure/components/sensor/) `GetReadings` method, which IMUs wrap.
+Acceleration and magnetometer data are available by using the [sensor](/components/sensor/) `GetReadings` method, which IMUs wrap.
The `imu-wit` movement sensor model supports the following IMUs manufactured by [WitMotion](https://www.wit-motion.com/):
@@ -33,7 +33,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `movement-sensor` type, then select the `imu-wit` model.
Enter a name for your movement sensor and click **Create**.
-{{< imgproc src="/build/configure/components/movement-sensor/imu-wit-builder.png" alt="Creation of an `imu-wit` movement sensor in the Viam app config builder." resize="600x" >}}
+{{< imgproc src="/components/movement-sensor/imu-wit-builder.png" alt="Creation of an `imu-wit` movement sensor in the Viam app config builder." resize="600x" >}}
Copy and paste the following attribute template into your movement sensor's **Attributes** box.
Then remove and fill in the attributes as applicable to your movement sensor, according to the table below.
diff --git a/docs/build/configure/components/movement-sensor/merged.md b/docs/components/movement-sensor/merged.md
similarity index 87%
rename from docs/build/configure/components/movement-sensor/merged.md
rename to docs/components/movement-sensor/merged.md
index 39098cc7f7..796333fac2 100644
--- a/docs/build/configure/components/movement-sensor/merged.md
+++ b/docs/components/movement-sensor/merged.md
@@ -13,13 +13,13 @@ aliases:
The `merged` movement sensor model is an abstraction that combines data from multiple movement sensors.
This allows you to aggregate the API methods supported by multiple sensors into a singular sensor client.
-This is especially useful if you want to get readings of position and orientation _or_ linear and angular velocity at the same time, which are normally separately supported and returned by [`GPS`](/build/configure/components/movement-sensor/#supported-models) or [`IMU`](/build/configure/components/movement-sensor/#supported-models) models, respectively.
+This is especially useful if you want to get readings of position and orientation _or_ linear and angular velocity at the same time, which are normally separately supported and returned by [`GPS`](/components/movement-sensor/#supported-models) or [`IMU`](/components/movement-sensor/#supported-models) models, respectively.
-To reduce velocity error when your robot is using the [navigation service](/mobility/navigation/), aggregate `Position()` from a [`GPS`](/build/configure/components/movement-sensor/#supported-models) and `Orientation()` from an [`IMU`](/build/configure/components/movement-sensor/#supported-models) movement sensor in a `merged` model.
+To reduce velocity error when your robot is using the [navigation service](/mobility/navigation/), aggregate `Position()` from a [`GPS`](/components/movement-sensor/#supported-models) and `Orientation()` from an [`IMU`](/components/movement-sensor/#supported-models) movement sensor in a `merged` model.
Configure a [navigation service](/mobility/navigation/) to use your merged sensor to navigate.
-Before configuring a `merged` movement sensor, configure each movement sensor you want to merge as an individual component according to its [model's configuration instructions](/build/configure/components/movement-sensor/#supported-models).
+Before configuring a `merged` movement sensor, configure each movement sensor you want to merge as an individual component according to its [model's configuration instructions](/components/movement-sensor/#supported-models).
Reference the `name` you configure for each individual component in the `merged` sensor's configuration attributes:
{{< tabs >}}
@@ -30,7 +30,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `movement-sensor` type, then select the `merged` model.
Enter a name for your movement sensor and click **Create**.
-{{< imgproc src="/build/configure/components/movement-sensor/merged-config-builder.png" alt="Creation of an `merged` movement sensor in the Viam app config builder." resize="600x" >}}
+{{< imgproc src="/components/movement-sensor/merged-config-builder.png" alt="Creation of an `merged` movement sensor in the Viam app config builder." resize="600x" >}}
Copy and paste the following attribute template into your movement sensor's **Attributes** box.
Then remove and fill in the attributes as applicable to your movement sensor, according to the table below.
@@ -121,7 +121,7 @@ Then remove and fill in the attributes as applicable to your movement sensor, ac
Configure an array of the `name` of each movement sensor you want to add to your robot as a merged resource in the attributes of the `merged` movement sensor model:
- The name of each attribute represents the `Property` that that particular movement sensor supports, or the type of reading or measurement that it takes.
-- Get the properties supported by each model from its [model configuration documentation](/build/configure/components/movement-sensor/#supported-models), or by calling [`GetProperties()`](/build/configure/components/movement-sensor/#getproperties) on the sensor.
+- Get the properties supported by each model from its [model configuration documentation](/components/movement-sensor/#supported-models), or by calling [`GetProperties()`](/components/movement-sensor/#getproperties) on the sensor.
- Put the `name` of each movement sensor into the attribute array for the type of reading it supports.
You can use the same sensor for multiple attributes if it supports multiple properties.
diff --git a/docs/build/configure/components/movement-sensor/mpu6050.md b/docs/components/movement-sensor/mpu6050.md
similarity index 84%
rename from docs/build/configure/components/movement-sensor/mpu6050.md
rename to docs/components/movement-sensor/mpu6050.md
index 4336f3fbf7..8f0d493f25 100644
--- a/docs/build/configure/components/movement-sensor/mpu6050.md
+++ b/docs/components/movement-sensor/mpu6050.md
@@ -20,7 +20,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `movement-sensor` type, then select the `gyro-mpu6050` model.
Enter a name for your movement sensor and click **Create**.
-{{< imgproc src="/build/configure/components/movement-sensor/mpu6050-builder.png" alt="Creation of an `gyro-mpu6050` movement sensor in the Viam app config builder." resize="600x" >}}
+{{< imgproc src="/components/movement-sensor/mpu6050-builder.png" alt="Creation of an `gyro-mpu6050` movement sensor in the Viam app config builder." resize="600x" >}}
Copy and paste the following attribute template into your movement sensor's **Attributes** box.
Then remove and fill in the attributes as applicable to your movement sensor, according to the table below.
@@ -113,8 +113,8 @@ Then remove and fill in the attributes as applicable to your movement sensor, ac
| Name | Type | Inclusion | Description |
| --------------------- | ------- | ------------ | ----------- |
-| `board` | string | **Required** | The `name` of the [board](/build/configure/components/board/) to which the device is wired. |
-| `i2c_bus` | string | **Required** | The `name` of the [I2C bus configured](/build/configure/components/board/#i2cs) on your [board](/build/configure/components/board/) wired to this device. |
+| `board` | string | **Required** | The `name` of the [board](/components/board/) to which the device is wired. |
+| `i2c_bus` | string | **Required** | The `name` of the [I2C bus configured](/components/board/#i2cs) on your [board](/components/board/) wired to this device. |
| `use_alt_i2c_address` | boolean | Optional | Depends on whether you wire AD0 low (leaving the default address of 0x68) or high (making the address 0x69). If high, set `true`. If low, set `false`.
Default: `false` |
## Test the movement sensor
@@ -123,4 +123,4 @@ After you configure your movement sensor, navigate to the [Control tab](/fleet/m
This panel presents the data collected by the movement sensor.
The sections in the panel include the angular velocity and linear acceleration.
-{{}}
+{{}}
diff --git a/docs/build/configure/components/movement-sensor/viam-visual-odometry.md b/docs/components/movement-sensor/viam-visual-odometry.md
similarity index 89%
rename from docs/build/configure/components/movement-sensor/viam-visual-odometry.md
rename to docs/components/movement-sensor/viam-visual-odometry.md
index ba7c8b3b6a..ba8f8a189e 100644
--- a/docs/build/configure/components/movement-sensor/viam-visual-odometry.md
+++ b/docs/components/movement-sensor/viam-visual-odometry.md
@@ -11,22 +11,22 @@ aliases:
# SMEs: Robin In
---
-Viam provides a `monocular-visual-odometry` {{< glossary_tooltip term_id="modular-resource" text="modular resource" >}} which uses monocular [visual odometry](https://en.wikipedia.org/wiki/Visual_odometry) to enable any [calibrated camera](/build/configure/components/camera/calibrate/) to function as a movement sensor.
-In this way, you can add basic movement sensing to your camera-equipped robot without needing a dedicated hardware [movement sensor](/build/configure/components/movement-sensor/).
+Viam provides a `monocular-visual-odometry` {{< glossary_tooltip term_id="modular-resource" text="modular resource" >}} which uses monocular [visual odometry](https://en.wikipedia.org/wiki/Visual_odometry) to enable any [calibrated camera](/components/camera/calibrate/) to function as a movement sensor.
+In this way, you can add basic movement sensing to your camera-equipped robot without needing a dedicated hardware [movement sensor](/components/movement-sensor/).
-{{
-The `monocular-visual-odometry` {{< glossary_tooltip term_id="module" text="module" >}} implements the following two methods of the [movement sensor API](/build/configure/components/movement-sensor/#api):
+The `monocular-visual-odometry` {{< glossary_tooltip term_id="module" text="module" >}} implements the following two methods of the [movement sensor API](/components/movement-sensor/#api):
-- [`GetLinearVelocity()`](/build/configure/components/movement-sensor/#getlinearvelocity)
-- [`GetAngularVelocity()`](/build/configure/components/movement-sensor/#getangularvelocity)
+- [`GetLinearVelocity()`](/components/movement-sensor/#getlinearvelocity)
+- [`GetAngularVelocity()`](/components/movement-sensor/#getangularvelocity)
Note that `GetLinearVelocity()` returns an estimation of the instantaneous linear velocity **without scale factor**.
Therefore, you should not consider returned unit measurements trustworthy: instead, `GetLinearVelocity()` should serve as a direction estimation only.
-While `monocular-visual-odometry` enables you to add movement sensing abilities to your robot without needing specialized hardware, a dedicated [movement sensor](/build/configure/components/movement-sensor/) will generally provide more accurate readings.
+While `monocular-visual-odometry` enables you to add movement sensing abilities to your robot without needing specialized hardware, a dedicated [movement sensor](/components/movement-sensor/) will generally provide more accurate readings.
If your robot requires precise awareness of its location and its movement, you should consider using a dedicated movement sensor in addition to the `monocular-visual-odometry` module.
The `monocular-visual-odometry` module is available [from the Viam registry](https://app.viam.com/module/viam/monocular-visual-odometry).
@@ -38,8 +38,8 @@ The source code for this module is available on the [`viam-visual-odometry` GitH
If you haven't already, [install `viam-server`](/get-started/installation/) on your robot.
-Your robot must have a [camera](/build/configure/components/camera/) in order to use the `monocular-visual-odometry` module.
-These instructions assume that you are using a [webcam](/build/configure/components/camera/webcam/)) type camera, but you can use any type of camera with visual odometry.
+Your robot must have a [camera](/components/camera/) in order to use the `monocular-visual-odometry` module.
+These instructions assume that you are using a [webcam](/components/camera/webcam/)) type camera, but you can use any type of camera with visual odometry.
## Configuration
@@ -202,7 +202,7 @@ Once you have configured a `camera` component, you need to calibrate it.
Because the `monocular-visual-odometry` module performs visual odometry calculations, its visual data source (the camera) must be as well defined as possible.
These calibration steps ensure that the video stream data that reaches the module is as uniform as possible when calculating measurements.
-1. Follow the [Calibrate a camera](/build/configure/components/camera/calibrate/) procedure to generate the required intrinsic parameters specific to your camera.
+1. Follow the [Calibrate a camera](/components/camera/calibrate/) procedure to generate the required intrinsic parameters specific to your camera.
1. Copy the resulting intrinsics data into your robot configuration, either in the **Config builder** or in the **Raw JSON**.
See the JSON Example tab above for an example intrinsics configuration.
diff --git a/docs/build/configure/components/movement-sensor/wheeled-odometry.md b/docs/components/movement-sensor/wheeled-odometry.md
similarity index 77%
rename from docs/build/configure/components/movement-sensor/wheeled-odometry.md
rename to docs/components/movement-sensor/wheeled-odometry.md
index ecc3e2c93c..71fd0c97bd 100644
--- a/docs/build/configure/components/movement-sensor/wheeled-odometry.md
+++ b/docs/components/movement-sensor/wheeled-odometry.md
@@ -23,24 +23,24 @@ Configure a `wheeled-odometry` movement sensor to implement _wheeled odometry_ o
_Wheeled odometry_ is the estimation of the rate of change of position, orientation, linear velocity, and angular velocity using the dimensions of a base, calculated by measuring the movement of the motors through encoders.
Because of this method of estimation, you don't have to have a specific piece of movement sensor hardware to implement `wheeled-odometry` on your robot.
-This model uses [encoders](/build/configure/components/encoder/) from [position reporting motors](/build/configure/components/motor/) to get an odometry estimate of a wheeled base as it moves.
+This model uses [encoders](/components/encoder/) from [position reporting motors](/components/motor/) to get an odometry estimate of a wheeled base as it moves.
With a configured `wheeled-odometry` movement sensor, your robot calculates an estimation of the position, orientation, linear velocity, and angular velocity of the wheeled base each time `time_interval_msec` elapses during a [session](/build/program/apis/sessions/).
-You can access these readings through the [movement sensor API](/build/configure/components/movement-sensor/#api).
+You can access these readings through the [movement sensor API](/components/movement-sensor/#api).
For the best accuracy with odometry calculations, it is recommended you configure a time interval of less than `1000` milliseconds.
After configuring a `wheeled-odometry` movement sensor, you can operate your base with Viam's built-in services like the [navigation service](/mobility/navigation/).
## Set-up requirements
-To prepare your robot, attach [encoders](/build/configure/components/encoder/) to each of the position-reporting motors on your base to measure their rotation.
+To prepare your robot, attach [encoders](/components/encoder/) to each of the position-reporting motors on your base to measure their rotation.
-- Select motors that can report their own position, like an encoded [`roboclaw`](/build/configure/components/motor/roboclaw/) or [`gpio` motors](/build/configure/components/motor/gpio/) with [encoders](/build/configure/components/encoder/#supported-models), or the [`odrive`](/registry/examples/odrive/) module.
- You can access this property of a configured motor through the [motor API's `GetProperties()`](/build/configure/components/motor/#getproperties).
-- Configure your rover as a [wheeled base component](/build/configure/components/base/wheeled/).
+- Select motors that can report their own position, like an encoded [`roboclaw`](/components/motor/roboclaw/) or [`gpio` motors](/components/motor/gpio/) with [encoders](/components/encoder/#supported-models), or the [`odrive`](/registry/examples/odrive/) module.
+ You can access this property of a configured motor through the [motor API's `GetProperties()`](/components/motor/#getproperties).
+- Configure your rover as a [wheeled base component](/components/base/wheeled/).
Make sure to configure the base width and circumference, as these measurements as a property of the base are vital for accurate odometry estimations by your movement sensor.
This movement sensor accesses these values through the base's `GetProperties()` API method.
-- Configure each of the position-reporting motors [as motor components](/build/configure/components/motor/).
+- Configure each of the position-reporting motors [as motor components](/components/motor/).
- Then, proceed to [configure](#configuration) a `wheeled-odometry` movement sensor with the name of each of the motor components.
## Configuration
@@ -53,7 +53,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `movement-sensor` type, then select the `wheeled-odometry` model.
Enter a name for your movement sensor and click **Create**.
-{{< imgproc src="/build/configure/components/movement-sensor/wheeled-odometry-builder.png" alt="Creation of an `wheeled-odometry` movement sensor in the Viam app config builder." resize="600x" >}}
+{{< imgproc src="/components/movement-sensor/wheeled-odometry-builder.png" alt="Creation of an `wheeled-odometry` movement sensor in the Viam app config builder." resize="600x" >}}
Copy and paste the following attribute template into your movement sensor's **Attributes** box.
Then remove and fill in the attributes as applicable to your movement sensor, according to the table below.
@@ -137,9 +137,9 @@ The following attributes are available for `wheeled-odometry` movement sensors:
| Name | Type | Inclusion | Description |
| ---- | ---- | --------- | ----------- |
-| `base` | string | **Required** | The `name` of the [base](/build/configure/components/base/) to which the encoders making up this movement sensor are wired. |
-| `left_motors` | object | **Required** | A list containing the name of each of the bases' left [position-reporting motors](/build/configure/components/motor/gpio/). |
-| `right_motors` | object | **Required** | A list containing the name of each of the bases' right [position-reporting motors](/build/configure/components/motor/gpio/). |
+| `base` | string | **Required** | The `name` of the [base](/components/base/) to which the encoders making up this movement sensor are wired. |
+| `left_motors` | object | **Required** | A list containing the name of each of the bases' left [position-reporting motors](/components/motor/gpio/). |
+| `right_motors` | object | **Required** | A list containing the name of each of the bases' right [position-reporting motors](/components/motor/gpio/). |
| `time_interval_msec` | number | Optional | The time in milliseconds between each wheeled odometry calculation.
Default: `500.0` |
## Test the movement sensor
diff --git a/docs/build/configure/components/pose-tracker.md b/docs/components/pose-tracker.md
similarity index 100%
rename from docs/build/configure/components/pose-tracker.md
rename to docs/components/pose-tracker.md
diff --git a/docs/build/configure/components/power-sensor/_index.md b/docs/components/power-sensor/_index.md
similarity index 100%
rename from docs/build/configure/components/power-sensor/_index.md
rename to docs/components/power-sensor/_index.md
diff --git a/docs/build/configure/components/power-sensor/fake.md b/docs/components/power-sensor/fake.md
similarity index 93%
rename from docs/build/configure/components/power-sensor/fake.md
rename to docs/components/power-sensor/fake.md
index 6f61f8644f..468291c834 100644
--- a/docs/build/configure/components/power-sensor/fake.md
+++ b/docs/components/power-sensor/fake.md
@@ -24,7 +24,7 @@ Click on the **Components** subtab and click **Create component** in the lower-l
Select the type `power_sensor`, then select the `fake` model.
Name your sensor, and click **Create**.
-![Fake power sensor configuration panel in the Viam app. No attributes are configured.](/build/configure/components/power-sensor/fake-config-builder.png)
+![Fake power sensor configuration panel in the Viam app. No attributes are configured.](/components/power-sensor/fake-config-builder.png)
{{% /tab %}}
{{% tab name="JSON Template" %}}
diff --git a/docs/build/configure/components/power-sensor/ina219.md b/docs/components/power-sensor/ina219.md
similarity index 92%
rename from docs/build/configure/components/power-sensor/ina219.md
rename to docs/components/power-sensor/ina219.md
index c451775c56..93d9e7aea1 100644
--- a/docs/build/configure/components/power-sensor/ina219.md
+++ b/docs/components/power-sensor/ina219.md
@@ -23,7 +23,7 @@ Click on the **Components** subtab and click **Create component** in the lower-l
Select the type `power_sensor`, then select the `ina219` model.
Name your sensor, and click **Create**.
-![ina219 power sensor configuration panel in the Viam app.](/build/configure/components/power-sensor/ina219-config-builder.png)
+![ina219 power sensor configuration panel in the Viam app.](/components/power-sensor/ina219-config-builder.png)
Copy and paste the following attribute template into your power sensor's **Attributes** box.
Then remove and fill in the attributes as applicable to your power sensor, according to the table below.
@@ -83,7 +83,7 @@ The following attributes are available for `INA219` sensors:
| Attribute | Type | Inclusion | Description |
| --------- | -----| --------- | ----------- |
-| `i2c_bus` | integer | **Required** | The `number` of the [I2C bus](/build/configure/components/board/#i2cs) that the sensor is connected to. |
+| `i2c_bus` | integer | **Required** | The `number` of the [I2C bus](/components/board/#i2cs) that the sensor is connected to. |
| `i2c_addr` | integer | Optional | The sensor's unique [I2C address](https://learn.adafruit.com/i2c-addresses/overview).
Default: `0x40`
| `max_current_amps` | float | Optional | Default: 3.2A. The maximum current that the sensor can measure in amperes (A).
| `shunt_resistance` | float | Optional | Default: 0.1Ω. The shunt resistance value of the sensor in Ohms (Ω).
diff --git a/docs/build/configure/components/power-sensor/ina226.md b/docs/components/power-sensor/ina226.md
similarity index 91%
rename from docs/build/configure/components/power-sensor/ina226.md
rename to docs/components/power-sensor/ina226.md
index cb7945b5a8..fd7b2a25f5 100644
--- a/docs/build/configure/components/power-sensor/ina226.md
+++ b/docs/components/power-sensor/ina226.md
@@ -21,7 +21,7 @@ Click on the **Components** subtab and click **Create component** in the lower-l
Select the type `power_sensor`, then select the `ina226` model.
Name your sensor, and click **Create**.
-![ina226 power sensor configuration panel in the Viam app.](/build/configure/components/power-sensor/ina226-config-builder.png)
+![ina226 power sensor configuration panel in the Viam app.](/components/power-sensor/ina226-config-builder.png)
Copy and paste the following attribute template into your power sensor's **Attributes** box.
Then remove and fill in the attributes as applicable to your power sensor, according to the table below.
@@ -81,7 +81,7 @@ The following attributes are available for `INA226` sensors:
| Attribute | Type | Inclusion | Description |
| --------- | -----| --------- | ----------- |
-| `i2c_bus` | integer | **Required** | The `number` of the [I2C bus](/build/configure/components/board/#i2cs) that the sensor is connected to. |
+| `i2c_bus` | integer | **Required** | The `number` of the [I2C bus](/components/board/#i2cs) that the sensor is connected to. |
| `i2c_addr` | integer | Optional | Default: `0x40`. The sensor's unique [I2C address](https://learn.adafruit.com/i2c-addresses/overview). |
| `max_current_amps` | number | Optional | Default: 20A. The maximum current that the sensor can measure in amperes (A).
| `shunt_resistance` | number | Optional | Default: 0.1Ω. The shunt resistance value of the sensor in Ohms (Ω).
diff --git a/docs/build/configure/components/power-sensor/renogy.md b/docs/components/power-sensor/renogy.md
similarity index 95%
rename from docs/build/configure/components/power-sensor/renogy.md
rename to docs/components/power-sensor/renogy.md
index 6d11d3ca47..e7b5b496b4 100644
--- a/docs/build/configure/components/power-sensor/renogy.md
+++ b/docs/components/power-sensor/renogy.md
@@ -22,7 +22,7 @@ Click on the **Components** subtab and click **Create component** in the lower-l
Select the type `power_sensor`, then select the `renogy` model.
Name your sensor, and click **Create**.
-{{}}
+{{}}
Copy and paste the following attribute template into your power sensor's **Attributes** box.
Then remove and fill in the attributes as applicable to your power sensor, according to the table below.
diff --git a/docs/build/configure/components/realsense-cam.md b/docs/components/realsense-cam.md
similarity index 100%
rename from docs/build/configure/components/realsense-cam.md
rename to docs/components/realsense-cam.md
diff --git a/docs/build/configure/components/sensor/_index.md b/docs/components/sensor/_index.md
similarity index 95%
rename from docs/build/configure/components/sensor/_index.md
rename to docs/components/sensor/_index.md
index 9c793ca016..70067d49da 100644
--- a/docs/build/configure/components/sensor/_index.md
+++ b/docs/components/sensor/_index.md
@@ -22,15 +22,15 @@ Add a sensor component to your robot to send the information the sensor measures
Viam has three additional component types defined separately from _sensor_ that you can use to implement sensors with specific functions:
-1. [Movement sensors](/build/configure/components/movement-sensor/) for Global Positioning System (GPS) units, inertial measurement units (IMUs), and other sensors that detect position, velocity, and acceleration.
-2. [Power sensors](/build/configure/components/power-sensor/) for sensors that can detect voltage, current, and power consumption of connected hardware.
-3. [Encoders](/build/configure/components/encoder/) for sensors that can detect speed and direction of rotation of a motor or a joint.
+1. [Movement sensors](/components/movement-sensor/) for Global Positioning System (GPS) units, inertial measurement units (IMUs), and other sensors that detect position, velocity, and acceleration.
+2. [Power sensors](/components/power-sensor/) for sensors that can detect voltage, current, and power consumption of connected hardware.
+3. [Encoders](/components/encoder/) for sensors that can detect speed and direction of rotation of a motor or a joint.
{{% /alert %}}
Most robots with a sensor need at least the following hardware:
-- A [board](/build/configure/components/board/)
+- A [board](/components/board/)
- Depending on your sensor's output type (analog or digital), an analog-to-digital converter (ADC) may be necessary to allow the sensor to communicate with the board
## Related Services
diff --git a/docs/build/configure/components/sensor/bme280.md b/docs/components/sensor/bme280.md
similarity index 89%
rename from docs/build/configure/components/sensor/bme280.md
rename to docs/components/sensor/bme280.md
index 58ebdc4931..13c5311d27 100644
--- a/docs/build/configure/components/sensor/bme280.md
+++ b/docs/components/sensor/bme280.md
@@ -22,7 +22,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `sensor` type, then select the `bme280` model.
Enter a name for your sensor and click **Create**.
-![Creation of a bme280 sensor in the Viam app config builder.](/build/configure/components/sensor/bme280-sensor-ui-config.png)
+![Creation of a bme280 sensor in the Viam app config builder.](/components/sensor/bme280-sensor-ui-config.png)
Copy and paste the following attribute template into your sensor's **Attributes** box.
Then remove and fill in the attributes as applicable to your sensor, according to the table below.
@@ -81,8 +81,8 @@ The following attributes are available for `bme280` sensors:
| Attribute | Type | Inclusion | Description |
| --------- | ---- | --------- | ---------- |
-| `board` | string | **Required** | The `name` of the [board](/build/configure/components/board/) the sensor is wired to. |
-| `i2c_bus` | string | **Required** | The `name` of the [I2C bus](/build/configure/components/board/#i2cs) on the board that the sensor is wired to. |
+| `board` | string | **Required** | The `name` of the [board](/components/board/) the sensor is wired to. |
+| `i2c_bus` | string | **Required** | The `name` of the [I2C bus](/components/board/#i2cs) on the board that the sensor is wired to. |
| `i2c_address` | string | Optional | Default: `0x77`. The [I2C device address](https://learn.adafruit.com/i2c-addresses/overview) of the sensor. |
{{< readfile "/static/include/components/test-control/sensor-control.md" >}}
diff --git a/docs/build/configure/components/sensor/ds18b20.md b/docs/components/sensor/ds18b20.md
similarity index 97%
rename from docs/build/configure/components/sensor/ds18b20.md
rename to docs/components/sensor/ds18b20.md
index 58418a6df8..0a95468fef 100644
--- a/docs/build/configure/components/sensor/ds18b20.md
+++ b/docs/components/sensor/ds18b20.md
@@ -22,7 +22,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `sensor` type, then select the `ds18b20` model.
Enter a name for your sensor and click **Create**.
-![Creation of a ds18b20 sensor in the Viam app config builder.](/build/configure/components/sensor/ds18b20-sensor-ui-config.png)
+![Creation of a ds18b20 sensor in the Viam app config builder.](/components/sensor/ds18b20-sensor-ui-config.png)
Copy and paste the following attribute template into your sensor's **Attributes** box.
Then remove and fill in the attributes as applicable to your sensor, according to the table below.
diff --git a/docs/build/configure/components/sensor/fake.md b/docs/components/sensor/fake.md
similarity index 93%
rename from docs/build/configure/components/sensor/fake.md
rename to docs/components/sensor/fake.md
index d868c2996a..16fc4369e4 100644
--- a/docs/build/configure/components/sensor/fake.md
+++ b/docs/components/sensor/fake.md
@@ -24,7 +24,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `sensor` type, then select the `fake` model.
Enter a name for your sensor and click **Create**.
-![An example configuration for a fake sensor in the Viam app Config Builder. Attributes are left blank.](/build/configure/components/sensor/fake-sensor-ui-config.png)
+![An example configuration for a fake sensor in the Viam app Config Builder. Attributes are left blank.](/components/sensor/fake-sensor-ui-config.png)
{{% /tab %}}
{{% tab name="JSON Template" %}}
diff --git a/docs/build/configure/components/sensor/sensirion-sht3xd.md b/docs/components/sensor/sensirion-sht3xd.md
similarity index 93%
rename from docs/build/configure/components/sensor/sensirion-sht3xd.md
rename to docs/components/sensor/sensirion-sht3xd.md
index 6a6cf36026..d4212aa5f7 100644
--- a/docs/build/configure/components/sensor/sensirion-sht3xd.md
+++ b/docs/components/sensor/sensirion-sht3xd.md
@@ -22,7 +22,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `sensor` type, then select the `sensirion-sht3xd` model.
Enter a name for your sensor and click **Create**.
-![Creation of a sensirion-sht3xd sensor in the Viam app config builder.](/build/configure/components/sensor/sensirion-sht3xd-sensor-ui-config.png)
+![Creation of a sensirion-sht3xd sensor in the Viam app config builder.](/components/sensor/sensirion-sht3xd-sensor-ui-config.png)
Copy and paste the following attribute template into your sensor's **Attributes** box.
Then remove and fill in the attributes as applicable to your sensor, according to the table below.
@@ -79,7 +79,7 @@ The following attributes are available for `sensirion-sht3xd` sensors:
| Attribute | Type | Inclusion | Description |
| --------- | ---- | --------- | ----------- |
-| `i2c_bus` | string | **Required** | The index of the [I2C bus](/build/configure/components/board/#i2cs) on the board that the sensor is wired to. |
+| `i2c_bus` | string | **Required** | The index of the [I2C bus](/components/board/#i2cs) on the board that the sensor is wired to. |
| `i2c_address` | string | Optional | The [I2C device address](https://learn.adafruit.com/i2c-addresses/overview) of the sensor.
Default: `0x44` |
{{< readfile "/static/include/components/test-control/sensor-control.md" >}}
diff --git a/docs/build/configure/components/sensor/ultrasonic.md b/docs/components/sensor/ultrasonic.md
similarity index 91%
rename from docs/build/configure/components/sensor/ultrasonic.md
rename to docs/components/sensor/ultrasonic.md
index 31d0c82a24..2d8d4d67dd 100644
--- a/docs/build/configure/components/sensor/ultrasonic.md
+++ b/docs/components/sensor/ultrasonic.md
@@ -13,9 +13,9 @@ aliases:
---
{{< alert title="Tip" color="tip" >}}
-An ultrasonic distance sensor can also be configured as a [camera](/build/configure/components/camera/) resource.
+An ultrasonic distance sensor can also be configured as a [camera](/components/camera/) resource.
-When configured as a camera, you can use the camera method [`GetPointCloud()`](/build/configure/components/camera/#getpointcloud), rather than the sensor method [`GetReadings()`](/build/configure/components/sensor/#getreadings).
+When configured as a camera, you can use the camera method [`GetPointCloud()`](/components/camera/#getpointcloud), rather than the sensor method [`GetReadings()`](/components/sensor/#getreadings).
Additionally, you can use the camera component as an input to a [vision service](/ml/vision/) model that returns obstacles.
{{< /alert >}}
@@ -29,7 +29,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `sensor` type, then select the `ultrasonic` model.
Enter a name for your sensor and click **Create**.
-![Creation of a ultrasonic sensor in the Viam app config builder.](/build/configure/components/sensor/ultrasonic-sensor-ui-config.png)
+![Creation of a ultrasonic sensor in the Viam app config builder.](/components/sensor/ultrasonic-sensor-ui-config.png)
Copy and paste the following attribute template into your sensor's **Attributes** box.
Then remove and fill in the attributes as applicable to your sensor, according to the table below.
diff --git a/docs/build/configure/components/servo/_index.md b/docs/components/servo/_index.md
similarity index 95%
rename from docs/build/configure/components/servo/_index.md
rename to docs/components/servo/_index.md
index 94efc6dbc9..c624fd1adb 100644
--- a/docs/build/configure/components/servo/_index.md
+++ b/docs/components/servo/_index.md
@@ -17,17 +17,17 @@ aliases:
The servo component supports ["RC" or "hobby" servo motors](https://learn.adafruit.com/adafruit-motor-selection-guide/rc-servos).
These are small motors with built-in potentiometer position sensors, enabling you to control the angular position of the servo precisely.
-As servos can use a lot of power, drawing voltage away from a [board](/build/configure/components/board/), you should power your servo with its own power supply in most cases.
-The following shows an example wiring diagram for a hobby servo wired to a [`pi` board](/build/configure/components/board/pi/):
+As servos can use a lot of power, drawing voltage away from a [board](/components/board/), you should power your servo with its own power supply in most cases.
+The following shows an example wiring diagram for a hobby servo wired to a [`pi` board](/components/board/pi/):
-![A diagram showing the signal wire of a servo connected to pin 16 on a Raspberry Pi. The servo's power wires are connected to a 4.8V power supply.](/build/configure/components/servo/servo-wiring.png)
+![A diagram showing the signal wire of a servo connected to pin 16 on a Raspberry Pi. The servo's power wires are connected to a 4.8V power supply.](/components/servo/servo-wiring.png)
The colors of the servo wires in this diagram may not match your servo.
Refer to your servo's data sheet for wiring specifications.
Most robots with a servo need at least the following hardware:
-- A [board component](/build/configure/components/board/) that can run `viam-server`
+- A [board component](/components/board/) that can run `viam-server`
- A servo
- A power supply for the board
- A power supply for the servo
@@ -43,8 +43,8 @@ Most robots with a servo need at least the following hardware:
The Viam servo component supports [hobby servos](https://learn.adafruit.com/adafruit-motor-selection-guide/rc-servos).
-If your motor is coupled with an [encoder](/build/configure/components/encoder/), not a potentiometer, for position feedback, you should not configure it as a servo.
-Check your device's data sheet and configure that type of servo as an [encoded motor](/build/configure/components/motor/gpio/encoded-motor/).
+If your motor is coupled with an [encoder](/components/encoder/), not a potentiometer, for position feedback, you should not configure it as a servo.
+Check your device's data sheet and configure that type of servo as an [encoded motor](/components/motor/gpio/encoded-motor/).
{{% /alert %}}
@@ -62,8 +62,8 @@ For configuration information, click on the model name:
| Model | Description |
| ----- | ----------- |
| [`fake`](fake/) | A model used for testing, with no physical hardware. |
-| [`gpio`](gpio/) | A hobby servo wired to any model of [board](/build/configure/components/board/#supported-models) besides `pi`. |
-| [`pi`](pi/) | A hobby servo wired to a [Raspberry Pi board](/build/configure/components/board/pi/). |
+| [`gpio`](gpio/) | A hobby servo wired to any model of [board](/components/board/#supported-models) besides `pi`. |
+| [`pi`](pi/) | A hobby servo wired to a [Raspberry Pi board](/components/board/pi/). |
| Name | Type | Inclusion | Description |
| ---- | ---- | --------- | ----------- |
-| `pin` | string | **Required** | The {{< glossary_tooltip term_id="pin-number" text="pin number" >}} of the pin the servo's control wire is wired to on the [board](/build/configure/components/board/). |
-| `board` | string | **Required** | `name` of the [board](/build/configure/components/board/) the servo is wired to. |
+| `pin` | string | **Required** | The {{< glossary_tooltip term_id="pin-number" text="pin number" >}} of the pin the servo's control wire is wired to on the [board](/components/board/). |
+| `board` | string | **Required** | `name` of the [board](/components/board/) the servo is wired to. |
| `min_angle_deg` | float | Optional | The minimum angle in degrees that the servo can reach.
Default = `0.0`
Range = [`0.0`, `180.0`] |
| `max_angle_deg` | float | Optional | The maximum angle in degrees that the servo can reach.
Default = `180.0`
Range = [`0.0`, `180.0`] |
| `starting_position_deg` | float | Optional | Starting position of the servo in degrees.
Default = `0.0`
Range = [`0.0`, `180.0`] |
diff --git a/docs/build/configure/components/servo/pi.md b/docs/components/servo/pi.md
similarity index 89%
rename from docs/build/configure/components/servo/pi.md
rename to docs/components/servo/pi.md
index cae2fc6aac..f476a70e30 100644
--- a/docs/build/configure/components/servo/pi.md
+++ b/docs/components/servo/pi.md
@@ -17,7 +17,7 @@ Unlike other servo models, `pi` servos are implemented as part of the [`pi` boar
{{% /alert %}}
-Configure a `pi` servo to integrate a hobby servo controlled by general-purpose input/output (GPIO) pins on a [Raspberry Pi board](/build/configure/components/board/pi/) into your robot:
+Configure a `pi` servo to integrate a hobby servo controlled by general-purpose input/output (GPIO) pins on a [Raspberry Pi board](/components/board/pi/) into your robot:
{{< tabs name="Configure a pi Servo" >}}
{{% tab name="Config Builder" %}}
@@ -27,7 +27,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `servo` type, then select the `pi` model.
Enter a name for your servo and click **Create**.
-{{< imgproc src="/build/configure/components/servo/pi-servo-ui-config.png" alt="An example configuration for a pi servo in the Viam app Config Builder." resize="600x" >}}
+{{< imgproc src="/components/servo/pi-servo-ui-config.png" alt="An example configuration for a pi servo in the Viam app Config Builder." resize="600x" >}}
Copy and paste the following attribute template into your servo's **Attributes** box.
Then remove and fill in the attributes as applicable to your servo, according to the table below.
@@ -113,7 +113,7 @@ Then remove and fill in the attributes as applicable to your servo, according to
{{% /tab %}}
{{% tab name="Annotated JSON" %}}
-![A servo JSON config with explanatory annotations for each attribute.](/build/configure/components/servo/servo-json.png)
+![A servo JSON config with explanatory annotations for each attribute.](/components/servo/servo-json.png)
{{% /tab %}}
{{< /tabs >}}
@@ -123,8 +123,8 @@ The following attributes are available for `pi` servos:
| Name | Type | Inclusion | Description |
| ---- | ---- | --------- | ----------- |
-| `pin` | string | **Required** | The {{< glossary_tooltip term_id="pin-number" text="pin number" >}} of the pin the servo's control wire is wired to on the [board](/build/configure/components/board/). |
-| `board` | string | **Required** | `name` of the [board](/build/configure/components/board/) the servo is wired to. |
+| `pin` | string | **Required** | The {{< glossary_tooltip term_id="pin-number" text="pin number" >}} of the pin the servo's control wire is wired to on the [board](/components/board/). |
+| `board` | string | **Required** | `name` of the [board](/components/board/) the servo is wired to. |
| `min` | float | Optional | Sets a software limit on the minimum angle in degrees your servo can rotate to.
Default = `0.0`
Range = [`0.0`, `180.0`] |
| `max` | float | Optional | Sets a software limit on the maximum angle in degrees your servo can rotate to.
Default = `180.0`
Range = [`0.0`, `180.0`] |
| `starting_position_degs` | float | Optional | Starting position of the servo in degrees.
Default = `0.0`
Range = [`0.0`, `180.0`] |
diff --git a/docs/data/_index.md b/docs/data/_index.md
index 75808f264a..46cf44f926 100644
--- a/docs/data/_index.md
+++ b/docs/data/_index.md
@@ -1,7 +1,7 @@
---
title: "Data Management"
linkTitle: "Data Management"
-weight: 60
+weight: 440
no_list: true
type: "docs"
tags: ["data management", "data", "services"]
@@ -13,7 +13,7 @@ aliases:
- "/data-management/"
- "/data-management/"
- "/services/data/"
-icon: "/build/configure/services/icons/data-capture.svg"
+icon: "/services/icons/data-capture.svg"
menuindent: true
# SME: Alexa Greenberg
---
@@ -37,15 +37,15 @@ Once you have captured and synced data, you can:
## Used with
{{< cards >}}
-{{< relatedcard link="/build/configure/components/arm/">}}
-{{< relatedcard link="/build/configure/components/board/">}}
-{{< relatedcard link="/build/configure/components/camera/">}}
-{{< relatedcard link="/build/configure/components/encoder/">}}
-{{< relatedcard link="/build/configure/components/gantry/">}}
-{{< relatedcard link="/build/configure/components/motor/">}}
-{{< relatedcard link="/build/configure/components/movement-sensor/">}}
-{{< relatedcard link="/build/configure/components/sensor/">}}
-{{< relatedcard link="/build/configure/components/servo/">}}
+{{< relatedcard link="/components/arm/">}}
+{{< relatedcard link="/components/board/">}}
+{{< relatedcard link="/components/camera/">}}
+{{< relatedcard link="/components/encoder/">}}
+{{< relatedcard link="/components/gantry/">}}
+{{< relatedcard link="/components/motor/">}}
+{{< relatedcard link="/components/movement-sensor/">}}
+{{< relatedcard link="/components/sensor/">}}
+{{< relatedcard link="/components/servo/">}}
{{< /cards >}}
You can configure capture frequency individually for each component.
@@ -127,7 +127,7 @@ You can chose to:
See [Query Data](/data/query/) for instructions on using each of these approaches.
-Only tabular data, such as [sensor](/build/configure/components/sensor/) readings, can be queried in this fashion.
+Only tabular data, such as [sensor](/components/sensor/) readings, can be queried in this fashion.
To search other types of data, such as images, see [Filter Data](/data/view/#filter-data).
### Train and deploy machine learning
diff --git a/docs/data/capture.md b/docs/data/capture.md
index 2d7d208853..01c0f64612 100644
--- a/docs/data/capture.md
+++ b/docs/data/capture.md
@@ -372,7 +372,7 @@ If you are capturing camera data, it can happen that the camera captures and syn
To sync your captured data with the cloud, [configure cloud sync](/data/cloud-sync/).
-If you have synced tabular data, such as [sensor](/build/configure/components/sensor/) readings, you can [query that data with SQL or MQL](/data/query/) from the Viam app or a MQL-compatible client.
+If you have synced tabular data, such as [sensor](/components/sensor/) readings, you can [query that data with SQL or MQL](/data/query/) from the Viam app or a MQL-compatible client.
If you have synced images, you can use those images to [train machine learning models](/ml/train-model/) within the Viam app.
For a comprehensive tutorial on using data capture and synchronization together with the ML model service, see [Capture Data and Train a Model](/tutorials/services/data-mlmodel-tutorial/).
diff --git a/docs/data/cloud-sync.md b/docs/data/cloud-sync.md
index f6a8d681c2..a7e58d1bc5 100644
--- a/docs/data/cloud-sync.md
+++ b/docs/data/cloud-sync.md
@@ -144,7 +144,7 @@ To view your captured data in the cloud, see [View Data](/data/view/).
To export your captured data from the cloud, see [Export Data](/data/export/).
-If you have synced tabular data, such as [sensor](/build/configure/components/sensor/) readings, you can [query that data with SQL or MQL](/data/query/) from the Viam app or a MQL-compatible client.
+If you have synced tabular data, such as [sensor](/components/sensor/) readings, you can [query that data with SQL or MQL](/data/query/) from the Viam app or a MQL-compatible client.
If you have synced images, you can use those images to [train machine learning models](/ml/train-model/) within the Viam app.
For a comprehensive tutorial on using data capture and synchronization together with the ML model service, see [Capture Data and Train a Model](/tutorials/services/data-mlmodel-tutorial/).
diff --git a/docs/data/query.md b/docs/data/query.md
index d928ce7eef..d1178cfbaf 100644
--- a/docs/data/query.md
+++ b/docs/data/query.md
@@ -20,7 +20,7 @@ You can:
You can run queries against both the captured tabular data itself as well as its metadata, including robot ID, organization ID, and [tags](/data/dataset/#image-tags).
-Only tabular data, such as [sensor](/build/configure/components/sensor/) readings, can be queried using SQL or MQL.
+Only tabular data, such as [sensor](/components/sensor/) readings, can be queried using SQL or MQL.
To search non-tabular data, such as images, see [Filter Data](/data/view/#filter-data).
To perform searches against tabular data from within the Python SDK, use the [`TabularDataByFilter`](/build/program/apis/data-client/#tabulardatabyfilter) method.
@@ -74,7 +74,7 @@ Synced data is stored in a MongoDB [Atlas Data Federation](https://www.mongodb.c
You can query against both the captured tabular data itself as well as its metadata, including robot ID, organization ID, and [tags](/data/dataset/#image-tags).
-Only tabular data, such as [sensor](/build/configure/components/sensor/) readings, can be queried in this fashion.
+Only tabular data, such as [sensor](/components/sensor/) readings, can be queried in this fashion.
Before being able to query data, you must configure data query.
diff --git a/docs/data/view.md b/docs/data/view.md
index a862043c3e..63d9cd621c 100644
--- a/docs/data/view.md
+++ b/docs/data/view.md
@@ -57,7 +57,7 @@ You can also delete data using the [Viam CLI](/fleet/cli/).
To export your captured data from the cloud, see [Export Data](../export/).
-If you have synced tabular data, such as [sensor](/build/configure/components/sensor/) readings, you can [query that data with SQL or MQL](../query/) from the Viam app or a MQL-compatible client.
+If you have synced tabular data, such as [sensor](/components/sensor/) readings, you can [query that data with SQL or MQL](../query/) from the Viam app or a MQL-compatible client.
If you have synced images, you can use those images to [train machine learning models](/ml/train-model/) within the Viam app.
For a comprehensive tutorial on using data capture and synchronization together with the ML model service, see [Capture Data and Train a Model](/tutorials/services/data-mlmodel-tutorial/).
diff --git a/docs/fleet/_index.md b/docs/fleet/_index.md
index 9450428950..1a97068a83 100644
--- a/docs/fleet/_index.md
+++ b/docs/fleet/_index.md
@@ -1,7 +1,7 @@
---
title: "Fleet Management"
linkTitle: "Fleet Management"
-weight: 34
+weight: 430
type: "docs"
description: "Configure, control, debug, and manage your machines from the cloud at app.viam.com on your own or with a team."
tags: ["fleet management", "cloud", "app"]
diff --git a/docs/fleet/cli.md b/docs/fleet/cli.md
index 50cfc603a1..dce3144854 100644
--- a/docs/fleet/cli.md
+++ b/docs/fleet/cli.md
@@ -287,7 +287,7 @@ viam organizations --help
The `board` command allows you to manage your board definition files.
With it, you can upload new board definition files to the Viam app, download your existing board definition files, and list the files already uploaded.
-You can use board definition files to configure pin mappings for [`customlinux` boards](/build/configure/components/board/customlinux/).
+You can use board definition files to configure pin mappings for [`customlinux` boards](/components/board/customlinux/).
```sh {class="command-line" data-prompt="$"}
viam board upload --name= --organization= --version= file.json
diff --git a/docs/get-started/installation/_index.md b/docs/get-started/installation/_index.md
index 9f933bbb53..555076ff1d 100644
--- a/docs/get-started/installation/_index.md
+++ b/docs/get-started/installation/_index.md
@@ -2,7 +2,7 @@
title: "Installation Guide"
linkTitle: "Installation Guide"
childTitleEndOverwrite: "Try Viam"
-weight: 20
+weight: 100
no_list: true
type: docs
image: "/get-started/installation/thumbnails/install.png"
@@ -23,7 +23,7 @@ aliases:
---
To use Viam software with your machine, install and run the `viam-server` binary on the single board computer (SBC) or other computer that will run your machine and is connected to your hardware.
-Installing on a laptop or desktop computer is useful if you don't have an SBC available, or if you want to run a Viam [service](/build/configure/services/) with your robot that requires more computing resources than are otherwise available on an SBC.
+Installing on a laptop or desktop computer is useful if you don't have an SBC available, or if you want to run a Viam [service](/services/) with your robot that requires more computing resources than are otherwise available on an SBC.
{{< alert title="Compatibility" color="note" >}}
diff --git a/docs/get-started/installation/prepare/jetson-agx-orin-setup.md b/docs/get-started/installation/prepare/jetson-agx-orin-setup.md
index b0dd15a939..b3d6f2d9ca 100644
--- a/docs/get-started/installation/prepare/jetson-agx-orin-setup.md
+++ b/docs/get-started/installation/prepare/jetson-agx-orin-setup.md
@@ -87,7 +87,7 @@ If this command fails, try using `wget https://storage.googleapis.com/packages.v
Consult the instructions you received when purchasing your device for more information.
2. Ensure the driver has successfully installed by running `sudo dmesg | grep ar0234`. The output should include `ar0234 Detected Ar0234 sensor`.
3. Connect the AR0234 camera module and daughterboard to the J509 port located at the bottom of the Developer Kit.
-4. Configure the camera as a [webcam](/build/configure/components/camera/webcam/).
+4. Configure the camera as a [webcam](/components/camera/webcam/).
## Serial Communication Protocol Tips
diff --git a/docs/get-started/installation/prepare/pumpkin.md b/docs/get-started/installation/prepare/pumpkin.md
index 15e77d4593..9ce31e1523 100644
--- a/docs/get-started/installation/prepare/pumpkin.md
+++ b/docs/get-started/installation/prepare/pumpkin.md
@@ -207,7 +207,7 @@ Use the template and example below to populate the JSON file with a single key,
## Configure a `customlinux` board
-Configure your board as a [`customlinux`](/build/configure/components/board/customlinux/) board to use your board definitions file:
+Configure your board as a [`customlinux`](/components/board/customlinux/) board to use your board definitions file:
{{< tabs name="Configure a customlinux board" >}}
{{% tab name="Config Builder" %}}
@@ -217,7 +217,7 @@ Click on the **Components** subtab and click **Create component**.
Select the `board` type, then select the `customlinux` model.
Enter a name for your `customlinux` board and click **Create**.
-![An example configuration for a customlinux board in the Viam app Config Builder.](/build/configure/components/board/customlinux-ui-config.png)
+![An example configuration for a customlinux board in the Viam app Config Builder.](/components/board/customlinux-ui-config.png)
Copy and paste the following json object into your board's **Attributes** box.
diff --git a/docs/get-started/try-viam/rover-resources/_index.md b/docs/get-started/try-viam/rover-resources/_index.md
index 0a704379fd..57cdf935f2 100644
--- a/docs/get-started/try-viam/rover-resources/_index.md
+++ b/docs/get-started/try-viam/rover-resources/_index.md
@@ -29,7 +29,7 @@ If you want a convenient mobile {{% glossary_tooltip term_id="base" text="base"%
The Viam Rover arrives preassembled with two encoded motors with suspension, a webcam with a microphone unit, and a 3D accelerometer module.
Featuring an anodized aluminum chassis with expandable mounting features, the rover can comfortably navigate indoor environments with a 20 lb payload.
- You can customize your rover by mounting sensors, LiDAR, and arms.
+ You can customize your rover by mounting sensors, LiDAR, and arms.