diff --git a/assets/js/models.js b/assets/js/models.js
index bbc5a9f12d..b643dfadcf 100644
--- a/assets/js/models.js
+++ b/assets/js/models.js
@@ -34,7 +34,7 @@ search.addWidgets([
container: "#hits",
templates: {
item: `
-
+
{{#helpers.highlight}}{ "attribute": "description" }{{/helpers.highlight}}
`,
},
@@ -55,9 +55,9 @@ search.addWidgets([
let results = '';
if (data.hasManyResults) {
- results += `Showing ${data.nbHits} results:`;
+ results += `${data.nbHits} results:`;
} else if (data.hasOneResult) {
- results += `Showing 1 result:`;
+ results += `1 result:`;
} else {
results += ``;
}
diff --git a/docs/components/arm/_index.md b/docs/components/arm/_index.md
index 2331a5df17..ab10825b35 100644
--- a/docs/components/arm/_index.md
+++ b/docs/components/arm/_index.md
@@ -47,9 +47,21 @@ Arm drivers are also paired, in the RDK, with JSON files that describe the kinem
- If there is no way for the arm to move to the desired location in a straight line, or if it would self-collide or collide with an obstacle that was passed in as something to avoid, then the `move_to_position` call will fail.
-## Configuration
+## Supported Models
-For configuration information, click on one of the supported arm models:
+To use your arm with Viam, check whether one of the following [built-in models](#built-in-models) or [modular resources](#modular-resources) supports your arm.
+
+{{< alert title="Add support for other models" color="tip" >}}
+
+If none of the existing models fit your use case, you can [create a modular resource](/modular-resources/) to add support for it.
+
+You can follow [this guide](/modular-resources/examples/custom-arm/) to implement your custom arm as a [modular resource](/modular-resources/).
+
+{{< /alert >}}
+
+### Built-in models
+
+For configuration information, click on the model name:
| Model | Description |
@@ -64,8 +76,6 @@ For configuration information, click on one of the supported arm models:
{{}}
-You can follow [this guide](/modular-resources/examples/custom-arm/) to implement your custom arm as a [modular resource](/modular-resources/).
-
## Control your arm with Viam's client SDK libraries
To get started using Viam's SDKs to connect to and control your robot, go to your robot's page on [the Viam app](https://app.viam.com), navigate to the **Code sample** tab, select your preferred programming language, and copy the sample code generated.
diff --git a/docs/components/arm/fake.md b/docs/components/arm/fake.md
index fbdf392e16..294d239929 100644
--- a/docs/components/arm/fake.md
+++ b/docs/components/arm/fake.md
@@ -87,7 +87,7 @@ The following attributes are available for `fake` arms:
| Name | Type | Inclusion | Description |
| ---- | ---- | --------- | ----------- |
-| `arm-model` | string | Optional | Model name of the robotic arm model you want your fake arm to act as. See [built-in arm models](../#configuration) for supported model names. |
+| `arm-model` | string | Optional | Model name of the robotic arm model you want your fake arm to act as. See [built-in arm models](../#supported-models) for supported model names. |
| `model-path` | string | Optional | The path to the [kinematic configuration file](/internals/kinematic-chain-config/) of the arm driver you want your fake arm to act as. This path should point to the exact location where the file is located on your computer running `viam-server`. |
{{% alert title="Important" color="note" %}}
diff --git a/docs/components/base/_index.md b/docs/components/base/_index.md
index b95146ad02..2d359e2119 100644
--- a/docs/components/base/_index.md
+++ b/docs/components/base/_index.md
@@ -26,9 +26,15 @@ Most mobile robots with a base need at least the following hardware:
- A power supply for the actuators.
- Some sort of chassis to hold everything together.
-## Configuration
+## Supported Models
-For configuration information, click on one of the supported base models:
+To use your base with Viam, check whether one of the following [built-in models](#built-in-models) or [modular resources](#modular-resources) supports your base.
+
+{{< readfile "/static/include/create-your-own-mr.md" >}}
+
+### Built-in models
+
+For configuration information, click on the model name:
| Model | Description |
diff --git a/docs/components/board/_index.md b/docs/components/board/_index.md
index 79704a9aa5..7f17509714 100644
--- a/docs/components/board/_index.md
+++ b/docs/components/board/_index.md
@@ -12,29 +12,29 @@ images: ["/icons/components/board.svg"]
# SMEs: Gautham, Rand
---
-A _board_ is the signal wire hub of a robot that provides access to general purpose input/output [(GPIO)](https://www.howtogeek.com/787928/what-is-gpio/) pins: a collection of pins on the motherboard of a computer that can receive electrical signals.
+A _board_ component on your robot communicates with the other [components](/components/) of the robot.
-You can 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.
+A board can be:
-This control is simplified with [`viam-server`](/installation/).
-When Viam's software is running on a computer with GPIO pins accessible to external hardware [components](/components/), it manages GPIO signaling to abstract control to {{< glossary_tooltip term_id="resource" text="resource" >}} APIs.
+- A single-board computer (SBC) with GPIO pins and a CPU capable of running `viam-server`.
+- A GPIO peripheral device that must connect to an external computer.
+- A PWM peripheral device that must connect to an SBC that has a CPU and GPIO pins.
-{{% 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`." %}}
+The board of a robot is also its signal wire hub that provides access to general purpose input/output [(GPIO)](https://www.howtogeek.com/787928/what-is-gpio/) pins: a collection of pins on the motherboard of a computer that can receive electrical signals.
-The [RDK](/internals/rdk/) also provides the [`GPIOPin` interface](#gpiopin-api) for direct control and monitoring of the state of GPIO pins.
+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.
-## Configuration
+{{% 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`." %}}
-Configure a _board_ component on your robot to communicate with the other [components](/components/) of the robot.
-Signaling is overseen by a computer running `viam-server`.
+## Supported Models
-A board can be:
+To use your base with Viam, check whether one of the following [built-in models](#built-in-models) or [modular resources](#modular-resources) supports your base.
-- A single-board computer (SBC) with GPIO pins and a CPU capable of running `viam-server`.
-- A GPIO peripheral device that must connect to an external computer.
-- A PWM peripheral device that must connect to an SBC that has a CPU and GPIO pins.
+{{< readfile "/static/include/create-your-own-mr.md" >}}
+
+### Built-in models
-For model-specific configuration information, click on one of the following models:
+For configuration information, click on the model name:
| Model | Description |
@@ -238,7 +238,7 @@ Get a `GPIOPin` by {{< glossary_tooltip term_id="pin-number" text="pin number" >
**Parameters:**
- `name` [(str)](https://docs.python.org/3/library/stdtypes.html#text-sequence-type-str): Pin number of the GPIO pin you want to retrieve as a `GPIOPin` interface.
- Refer to the pinout diagram and data sheet of your [board model](#configuration) for {{< glossary_tooltip term_id="pin-number" text="pin numbers" >}}.
+ Refer to the pinout diagram and data sheet of your [board model](#supported-models) for {{< glossary_tooltip term_id="pin-number" text="pin numbers" >}}.
**Returns:**
@@ -259,7 +259,7 @@ pin = await my_board.gpio_pin_by_name(name="15")
**Parameters:**
- `name` [(string)](https://pkg.go.dev/builtin#string): {{< glossary_tooltip term_id="pin-number" text="pin number" >}} of the GPIO pin you want to retrieve as a `GPIOPin` interface.
- Refer to the pinout diagram and data sheet of your [board model](#configuration) for {{< glossary_tooltip term_id="pin-number" text="pin numbers" >}}.
+ Refer to the pinout diagram and data sheet of your [board model](#supported-models) for {{< glossary_tooltip term_id="pin-number" text="pin numbers" >}}.
**Returns:**
@@ -291,7 +291,7 @@ Get the name of every [`AnalogReader`](#analogs) configured and residing on the
**Returns:**
-- [(List\[str\])](https://docs.python.org/3/library/stdtypes.html#typesseq-list): An list containing the `"name"` of every analog reader [configured](#configuration) on the board.
+- [(List\[str\])](https://docs.python.org/3/library/stdtypes.html#typesseq-list): A list containing the `"name"` of every analog reader [configured](#supported-models) on the board.
For more information, see the [Python SDK Docs](https://python.viam.dev/autoapi/viam/components/board/index.html#viam.components.board.Board.analog_reader_names).
@@ -311,7 +311,7 @@ names = await my_board.analog_reader_names()
**Returns:**
-- [([]string)](https://go.dev/tour/moretypes/7): An slice containing the `"name"` of every analog reader [configured](#configuration) on the board.
+- [([]string)](https://go.dev/tour/moretypes/7): A slice containing the `"name"` of every analog reader [configured](#supported-models) on the board.
For more information, see the [Go SDK Docs](https://pkg.go.dev/go.viam.com/rdk/components/board#Board).
@@ -338,7 +338,7 @@ Get the name of every [`DigitalInterrupt`](#digital_interrupts) configured on th
**Returns:**
-- [(List\[str\])](https://docs.python.org/3/library/stdtypes.html#typesseq-list): A list containing the `"name"` of every interrupt [configured](#configuration) on the board.
+- [(List\[str\])](https://docs.python.org/3/library/stdtypes.html#typesseq-list): A list containing the `"name"` of every interrupt [configured](#supported-models) on the board.
For more information, see the [Python SDK Docs](https://python.viam.dev/autoapi/viam/components/board/index.html#viam.components.board.Board.digital_interrupt_names).
@@ -358,7 +358,7 @@ names = await my_board.digital_interrupt_names()
**Returns:**
-- [([]string)](https://go.dev/tour/moretypes/7): A slice containing the `"name"` of every interrupt [configured](#configuration) on the board.
+- [([]string)](https://go.dev/tour/moretypes/7): A slice containing the `"name"` of every interrupt [configured](#supported-models) on the board.
For more information, see the [Go SDK Docs](https://pkg.go.dev/go.viam.com/rdk/components/board#Board).
diff --git a/docs/components/camera/_index.md b/docs/components/camera/_index.md
index 8875b36eeb..f824fbef38 100644
--- a/docs/components/camera/_index.md
+++ b/docs/components/camera/_index.md
@@ -31,9 +31,15 @@ You can use different models to:
- Combine streams from multiple cameras into one.
- Transform and process images.
-## Configuration
+## Supported Models
-For configuration information, click on one of the supported camera models:
+To use your camera with Viam, check whether one of the following [built-in models](#built-in-models) or [modular resources](#modular-resources) supports your camera.
+
+{{< readfile "/static/include/create-your-own-mr.md" >}}
+
+### Built-in models
+
+For configuration information, click on the model name:
| Model | Description |
diff --git a/docs/components/component/_index.md b/docs/components/component/_index.md
index 1cef24ce5d..3b91aaf048 100644
--- a/docs/components/component/_index.md
+++ b/docs/components/component/_index.md
@@ -28,9 +28,15 @@ Most robots with a COMPONENT need at least the following hardware (optional):
- Board
- ...
-## Configuration
+## Supported Models
-For configuration information, click on one of the supported COMPONENT models:
+To use your COMPONENT with Viam, check whether one of the following [built-in models](#built-in-models) or [modular resources](#modular-resources) supports your COMPONENT.
+
+{{< readfile "/static/include/create-your-own-mr.md" >}}
+
+### Built-in models
+
+For configuration information, click on the model name:
| Model | Description |
diff --git a/docs/components/encoder/_index.md b/docs/components/encoder/_index.md
index 5eedd04610..258d1ef9b5 100644
--- a/docs/components/encoder/_index.md
+++ b/docs/components/encoder/_index.md
@@ -31,9 +31,15 @@ Most robots with an encoder need at least the following hardware:
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.
-## Configuration
+## Supported Models
-For configuration information, click on one of the supported encoder models:
+To use your encoder with Viam, check whether one of the following [built-in models](#built-in-models) supports your encoder.
+
+{{< readfile "/static/include/create-your-own-mr.md" >}}
+
+### Built-in models
+
+For configuration information, click on the model name:
| Model | Description |
@@ -48,8 +54,6 @@ For configuration information, click on one of the supported encoder models:
{{}} -->
-If none of these models fit your use case, you can create a [modular resource](/modular-resources/) to add support for it.
-
## Control your encoder with Viam's client SDK libraries
To get started using Viam's SDKs to connect to and control your robot, go to your robot's page on [the Viam app](https://app.viam.com), navigate to the **Code sample** tab, select your preferred programming language, and copy the sample code generated.
diff --git a/docs/components/gantry/_index.md b/docs/components/gantry/_index.md
index 0a908a6871..1dc43cc712 100644
--- a/docs/components/gantry/_index.md
+++ b/docs/components/gantry/_index.md
@@ -34,9 +34,15 @@ Most robots with a gantry need at least the following hardware:
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
-## Configuration
+## Supported Models
-For configuration information, click on one of the supported gantry models:
+To use your gantry with Viam, check whether one of the following [built-in models](#built-in-models) or [modular resources](#modular-resources) supports your gantry.
+
+{{< readfile "/static/include/create-your-own-mr.md" >}}
+
+### Built-in models
+
+For configuration information, click on the model name:
| Model | Description |
diff --git a/docs/components/generic/_index.md b/docs/components/generic/_index.md
index d340ba9a06..1a639ced8e 100644
--- a/docs/components/generic/_index.md
+++ b/docs/components/generic/_index.md
@@ -27,9 +27,15 @@ If you want to use most of an existing API but need just a few other functions,
{{% /alert %}}
-## Configuration
+## Supported Models
-For configuration information, click on one of the supported generic models:
+To use your generic component with Viam, check whether one of the following [modular resources](#modular-resources) supports your component.
+
+{{< readfile "/static/include/create-your-own-mr.md" >}}
+
+### Built-in models
+
+For configuration information, click on the model name:
Model | Description
diff --git a/docs/components/gripper/_index.md b/docs/components/gripper/_index.md
index 7dc57cfee6..eefa40cb05 100644
--- a/docs/components/gripper/_index.md
+++ b/docs/components/gripper/_index.md
@@ -14,9 +14,15 @@ no_list: true
A _gripper_ is a robotic grasping device that can open and close, often attached to the end of an [arm](../arm/) or to a [gantry](../gantry/).
-## Configuration
+## Supported Models
-For configuration information, click on your gripper's model:
+To use your gripper with Viam, check whether one of the following [built-in models](#built-in-models) or [modular resources](#modular-resources) supports your gripper.
+
+{{< readfile "/static/include/create-your-own-mr.md" >}}
+
+### Built-in models
+
+For configuration information, click on the model name:
Model | Description
diff --git a/docs/components/input-controller/_index.md b/docs/components/input-controller/_index.md
index b8c76c2bd5..c53a1e81a4 100644
--- a/docs/components/input-controller/_index.md
+++ b/docs/components/input-controller/_index.md
@@ -26,11 +26,15 @@ Most robots with an input controller need at least the following hardware:
- 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](/components/arm/) or [motor](/components/motor/).
-## Configuration
+## Supported Models
-Configuration depends on the `model` of your device.
+To use your input controller with Viam, check whether one of the following [built-in models](#built-in-models) supports your input controller.
-For configuration information, click on one of the following models:
+{{< readfile "/static/include/create-your-own-mr.md" >}}
+
+### Built-in models
+
+For configuration information, click on the model name:
| Model | Description |
@@ -44,14 +48,14 @@ For configuration information, click on one of the following models:
-
-If none of these models fit your use case, you can [create a modular resources](/modular-resources/) to add support for it.
+{{}}
-Once you've configured your input controller according to model type, you can write code to define how your robot processes the input from the controller.
+{{< readfile "/static/include/create-your-own-mr.md" >}}-->
## Control your robot with an input controller with Viam's client SDK libraries
+Once you've configured your input controller according to model type, you can write code to define how your robot processes the input from the controller.
+
To get started using Viam's SDKs to connect to and control your robot, go to your robot's page on [the Viam app](https://app.viam.com), navigate to the **Code sample** tab, select your preferred programming language, and copy the sample code generated.
{{% snippet "show-secret.md" %}}
diff --git a/docs/components/motor/_index.md b/docs/components/motor/_index.md
index 22316ee0c0..6bb08230f0 100644
--- a/docs/components/motor/_index.md
+++ b/docs/components/motor/_index.md
@@ -26,10 +26,15 @@ Most robots with a motor need at least the following hardware:
[^dmcboard]: The `DMC4000` model does not require a board.
-## Configuration
+## Supported Models
-How you configure your motor with Viam depends more on the motor driver than on the motor itself.
-Click the model names below for configuration information:
+To use your motor with Viam, check whether one of the following [built-in models](#built-in-models) or [modular resources](#modular-resources) supports your motor.
+
+{{< readfile "/static/include/create-your-own-mr.md" >}}
+
+### Built-in models
+
+For configuration information, click on the model name:
Model | Description
diff --git a/docs/components/movement-sensor/_index.md b/docs/components/movement-sensor/_index.md
index d97590b9d3..c95b19e168 100644
--- a/docs/components/movement-sensor/_index.md
+++ b/docs/components/movement-sensor/_index.md
@@ -23,9 +23,16 @@ Viam also supports generic [sensors](/components/sensor/) and [encoders](/compon
{{% /alert %}}
-## Configuration
+## Supported Models
-Viam supports several different models of GPS, IMU and accelerometer.
+To use your GPS, IMU, accelerometer, or other movement sensor with Viam, check whether one of the following [built-in models](#built-in-models) or [modular resources](#modular-resources) supports your movement sensor.
+
+{{< readfile "/static/include/create-your-own-mr.md" >}}
+
+### Built-in models
+
+Viam supports several different models of movement sensor.
+For configuration information, click on the model name:
Click the model names below for configuration information:
diff --git a/docs/components/movement-sensor/merged.md b/docs/components/movement-sensor/merged.md
index 3c47f68146..5dbbef61af 100644
--- a/docs/components/movement-sensor/merged.md
+++ b/docs/components/movement-sensor/merged.md
@@ -11,13 +11,13 @@ images: ["/icons/components/imu.svg"]
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`](/components/movement-sensor/#configuration) or [`IMU`](/components/movement-sensor/#configuration) 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](/services/navigation/), aggregate `Position()` from a [`GPS`](/components/movement-sensor/#configuration) and `Orientation()` from an [`IMU`](/components/movement-sensor/#configuration) movement sensor in a `merged` model.
+To reduce velocity error when your robot is using the [navigation service](/services/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](/services/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](/components/movement-sensor/#configuration).
+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 >}}
@@ -119,7 +119,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](/components/movement-sensor/#configuration), or by calling [`GetProperties()`](/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/components/movement-sensor/wheeled-odometry.md b/docs/components/movement-sensor/wheeled-odometry.md
index dd3f46825e..f6f9d92555 100644
--- a/docs/components/movement-sensor/wheeled-odometry.md
+++ b/docs/components/movement-sensor/wheeled-odometry.md
@@ -33,7 +33,7 @@ After configuring a `wheeled-odometry` movement sensor, you can operate your bas
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`](/components/motor/roboclaw/) or [`gpio` motors](/components/motor/gpio/) with [encoders](/components/encoder/#configuration), or the [`odrive`](/modular-resources/examples/odrive/) module.
+- 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`](/modular-resources/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.
diff --git a/docs/components/power-sensor/_index.md b/docs/components/power-sensor/_index.md
index 9558e00f16..be8502c1eb 100644
--- a/docs/components/power-sensor/_index.md
+++ b/docs/components/power-sensor/_index.md
@@ -15,9 +15,15 @@ images: ["/icons/components/power-sensor.svg"]
A power sensor is a device that reports measurements of the voltage, current and power consumption in your robot's system.
Integrate this component to monitor your power levels.
-## Configuration
+## Supported Models
-For configuration information, click on your sensor’s model:
+To use your power sensor with Viam, check whether one of the following [built-in models](#built-in-models) or [modular resources](#modular-resources) supports your power sensor.
+
+{{< readfile "/static/include/create-your-own-mr.md" >}}
+
+### Built-in models
+
+For configuration information, click on the model name:
| Model | Description |
| --------------------- | ---------------------------------------------- |
diff --git a/docs/components/sensor/_index.md b/docs/components/sensor/_index.md
index d475f3d1f8..426c8463da 100644
--- a/docs/components/sensor/_index.md
+++ b/docs/components/sensor/_index.md
@@ -29,9 +29,15 @@ Most robots with a sensor need at least the following hardware:
- 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
-## Configuration
+## Supported Models
-For configuration information, click on one of the supported sensor models:
+To use your sensor with Viam, check whether one of the following [built-in models](#built-in-models) or [modular resources](#modular-resources) supports your sensor.
+
+{{< readfile "/static/include/create-your-own-mr.md" >}}
+
+### Built-in models
+
+For configuration information, click on the model name:
| Model | Description |
diff --git a/docs/components/servo/_index.md b/docs/components/servo/_index.md
index 653b153744..07a15858b4 100644
--- a/docs/components/servo/_index.md
+++ b/docs/components/servo/_index.md
@@ -29,8 +29,6 @@ Most robots with a servo need at least the following hardware:
- A power supply for the board
- A power supply for the servo
-## Configuration
-
{{% alert title="Tip" color="tip" %}}
The Viam servo component supports [hobby servos](https://learn.adafruit.com/adafruit-motor-selection-guide/rc-servos).
@@ -40,18 +38,27 @@ Check your device's data sheet and configure that type of servo as an [encoded m
{{% /alert %}}
-For configuration information, click on one of the supported servo models:
+## Supported Models
+
+To use your servo with Viam, check whether one of the following [built-in models](#built-in-models) supports your servo.
+
+{{< readfile "/static/include/create-your-own-mr.md" >}}
+
+### Built-in models
+
+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](/components/board/#configuration) besides `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/). |
+{{}}
+-->
If none of these models fit your use case, you can [create a modular resources](/modular-resources/) to add support for it.
diff --git a/docs/modular-resources/advanced/custom-components-remotes.md b/docs/modular-resources/advanced/custom-components-remotes.md
index 47bc59cf65..fb315e4cdb 100644
--- a/docs/modular-resources/advanced/custom-components-remotes.md
+++ b/docs/modular-resources/advanced/custom-components-remotes.md
@@ -25,7 +25,7 @@ Once you have coded your custom component and configured the remote servers, you
For example, you may have a robotic arm that is not one of the models supported by [Viam’s arm component](/components/arm/), and you want to integrate it with Viam.
To use is with Viam, you can create a custom component and register the new arm model with a Viam SDK.
-Then you can control it as part of your robot with the same [API methods](/components/arm/#api) available for [arm models built-in to the RDK](/components/arm/#configuration).
+Then you can control it as part of your robot with the same [API methods](/components/arm/#api) available for [arm models built-in to the RDK](/components/arm/#supported-models).
This example is available in the [Python SDK documentation](https://python.viam.dev/examples/example.html#subclass-a-component).
diff --git a/docs/modular-resources/examples/custom-arm.md b/docs/modular-resources/examples/custom-arm.md
index 348a66d406..5d1d12d77f 100644
--- a/docs/modular-resources/examples/custom-arm.md
+++ b/docs/modular-resources/examples/custom-arm.md
@@ -32,7 +32,7 @@ Each of these models must also include a [kinematics file](/internals/kinematic-
Each built-in driver in the RDK includes a corresponding kinematics file located in the same directory as the driver.
For example, the `ur5e`'s kinematics file, [`ur5e.json`](https://github.com/viamrobotics/rdk/blob/main/components/arm/universalrobots/ur5e.json), is provided in the RDK in the same directory as its driver, `ur.go`.
-See [Arm Configuration](/components/arm/#configuration) for the current list of built-in models the RDK provides.
+See [Arm Configuration](/components/arm/#supported-models) for the current list of built-in models the RDK provides.
{{% /alert %}}
diff --git a/docs/program/_index.md b/docs/program/_index.md
index 4ed80dbf5b..0d0f04ca63 100644
--- a/docs/program/_index.md
+++ b/docs/program/_index.md
@@ -29,7 +29,7 @@ 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`](/installation/) on the computer you want to use to control your robot (likely a [single-board computer](/components/board/#configuration)), and [configured your robot](/manage/configuration/).
+Before you get started with your program, ensure that you have [installed `viam-server`](/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](/manage/configuration/).
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:
diff --git a/docs/services/ml/_index.md b/docs/services/ml/_index.md
index 23d4c09785..6012e2ddf1 100644
--- a/docs/services/ml/_index.md
+++ b/docs/services/ml/_index.md
@@ -15,6 +15,10 @@ Once you have [trained](/manage/ml/train-model/) or [uploaded](/manage/ml/upload
You can use the following built-in model:
+{{< alert title="Note" color="note" >}}
+For some models, like the [Triton MLModel](/modular-resources/examples/triton/) for Jetson boards, you can configure the service to use the available CPU or GPU.
+{{< /alert >}}
+
| Model | Description |
| ----- | ----------- |
@@ -24,6 +28,8 @@ You can use the following built-in model:
{{}}
+{{< readfile "/static/include/create-your-own-mr.md" >}}
+
## Create an ML model service
{{< tabs >}}
diff --git a/docs/services/navigation/_index.md b/docs/services/navigation/_index.md
index 25a9510fe0..a96969bb67 100644
--- a/docs/services/navigation/_index.md
+++ b/docs/services/navigation/_index.md
@@ -621,7 +621,7 @@ heading, err := gps.CompassHeading(context.Background, nil)
Use compass heading readings to determine the _bearing_ of your robot, or, the [cardinal direction](https://en.wikipedia.org/wiki/Cardinal_direction) that your robot is facing.
-To read compass headings, [configure a capable movement sensor](/components/movement-sensor/#configuration) on your robot.
+To read compass headings, [configure a capable movement sensor](/components/movement-sensor/#supported-models) on your robot.
Then use the movement sensor API's [`GetCompassHeading()`](/components/movement-sensor/#getcompassheading) method to get readings from the sensor.
### Orientation
@@ -643,7 +643,7 @@ An orientation vector indicates how it is rotated relative to an origin coordina
You can choose the origin reference frame by configuring it using Viam's [frame system](/services/frame-system/).
The `GetOrientation` readings will report orientations relative to that initial frame.
-To read orientation, first [configure a capable movement sensor](/components/movement-sensor/#configuration) on your robot.
+To read orientation, first [configure a capable movement sensor](/components/movement-sensor/#supported-models) on your robot.
Additionally, follow [these instructions](/services/frame-system/#configuration) to configure the geometries of each component of your robot within the [frame system](/services/frame-system/).
Then use the movement sensor API's [`GetOrientation()`](/components/movement-sensor/#getorientation) method to get orientation readings.
@@ -665,7 +665,7 @@ angularVelocity, err := imu.AngularVelocity(context.Background, nil)
Use angular velocity readings to determine the speed and direction at which your robot is rotating.
-To get an angular velocity reading, first [configure a capable movement sensor](/components/movement-sensor/#configuration) on your robot.
+To get an angular velocity reading, first [configure a capable movement sensor](/components/movement-sensor/#supported-models) on your robot.
Then use the movement sensor API's [`GetAngularVelocity()`](/components/movement-sensor/#getangularvelocity) method to get angular velocity readings from the sensor.
### Position
@@ -686,7 +686,7 @@ position, altitude, err:= imu.Position(context.Background, nil)
Use position readings to determine the GPS coordinates of an object in 3D space or its position in the geographic coordinate system [(GCS)](https://en.wikipedia.org/wiki/Geographic_coordinate_system).
These position readings reflect the _absolute_ position of components.
-To get a position, [configure a capable movement sensor](/components/movement-sensor/#configuration) on your robot.
+To get a position, [configure a capable movement sensor](/components/movement-sensor/#supported-models) on your robot.
Then use the movement sensor API's [`GetPosition()`](/components/movement-sensor/#getposition) method to get position readings from the sensor.
### Linear Velocity
@@ -707,7 +707,7 @@ linearVelocity, err := imu.LinearVelocity(context.Background, nil)
Use linear velocity readings to determine the speed at which your robot is moving through space.
-To get linear velocity, [configure a capable movement sensor](/components/movement-sensor/#configuration) on your robot.
+To get linear velocity, [configure a capable movement sensor](/components/movement-sensor/#supported-models) on your robot.
Then use the movement sensor API's [`GetLinearVelocity()`](/components/movement-sensor/#getlinearvelocity) method to get linear velocity readings from the sensor.
### Linear Acceleration
@@ -728,7 +728,7 @@ linearAcceleration, err := imu.LinearAcceleration(context.Background, nil)
You can use linear acceleration readings to determine the rate of change of the [linear velocity](/services/navigation/#linear-velocity) of your robot, or, the acceleration at which your robot is moving through space.
-To get linear acceleration, [configure a capable movement sensor](/components/movement-sensor/#configuration) on your robot.
+To get linear acceleration, [configure a capable movement sensor](/components/movement-sensor/#supported-models) on your robot.
Then use the movement sensor API's [`GetLinearAcceleration()`](/components/movement-sensor/#getlinearacceleration) method to get linear acceleration readings from the sensor.
## Next steps
diff --git a/docs/services/vision/_index.md b/docs/services/vision/_index.md
index 3d9f06f30d..034a2c491e 100644
--- a/docs/services/vision/_index.md
+++ b/docs/services/vision/_index.md
@@ -24,7 +24,9 @@ Currently, the vision service supports the following kinds of operations:
+{{}}
+
+{{< readfile "/static/include/create-your-own-mr.md" >}}-->
## API
diff --git a/docs/tutorials/services/navigate-with-rover-base.md b/docs/tutorials/services/navigate-with-rover-base.md
index 91fbefd212..b7b9af00a3 100644
--- a/docs/tutorials/services/navigate-with-rover-base.md
+++ b/docs/tutorials/services/navigate-with-rover-base.md
@@ -87,7 +87,7 @@ If you are using different hardware, configure them according to the instruction
### Configure a board with `"digital_interrupts"`
First, configure the [board](/components/board/) local to your rover.
-Follow [these instructions](/components/board/#configuration) to configure your board model.
+Follow [these instructions](/components/board/#supported-models) to configure your board model.
We used a [`jetson` board](/components/board/jetson/), but you can use any model of board you have on hand, as the [resource's API](/components/board/#api) is hardware agnostic.
1. Configure a board named `local` as shown below:
@@ -137,7 +137,7 @@ Start by configuring the [encoders](/components/encoder/) and [motors](/componen
Assign the pins as the [digital interrupts](/components/board/#digital_interrupts) you configured for the board, and wire the encoders accordingly to pins {{< glossary_tooltip term_id="pin-number" text="numbered" >}} `31`, `29`, `23`, and `21` on your `local` board.
Refer to the [`incremental` encoder documentation](/components/encoder/incremental/) for attribute information.
-2. Next, follow [these instructions](/components/motor/#configuration) to configure the left and right [motors](/components/motor/) of the `wheeled` base.
+2. Next, follow [these instructions](/components/motor/#supported-models) to configure the left and right [motors](/components/motor/) of the `wheeled` base.
We [configured ours as `gpio` motors](/components/motor/gpio/), as shown below:

diff --git a/layouts/shortcodes/modular-resources.html b/layouts/shortcodes/modular-resources.html
index 2db9e719d4..f962d9e29e 100644
--- a/layouts/shortcodes/modular-resources.html
+++ b/layouts/shortcodes/modular-resources.html
@@ -1,6 +1,7 @@
-You can also use {{.Get "type" }} models from the Viam registry:
+Search for additional {{.Get "type" }} models that you can add from the Viam Registry:
+
For configuration information, click on the model name:
-If none of these models fit your use case, you can create a modular resources to add support for it.
-
diff --git a/static/include/components/board/board-i2cs.md b/static/include/components/board/board-i2cs.md
index f8ccd28f98..383035f970 100644
--- a/static/include/components/board/board-i2cs.md
+++ b/static/include/components/board/board-i2cs.md
@@ -8,7 +8,7 @@ To connect your board (controller) and a [component](/components/) that requires
{{% alert title="Important" color="note" %}}
You must also enable I2C on your board if it is not enabled by default.
-See your [board model's configuration instructions](/components/board/#configuration) if applicable.
+See your [board model's configuration instructions](/components/board/#supported-models) if applicable.
{{% /alert %}}
diff --git a/static/include/components/board/board-spis.md b/static/include/components/board/board-spis.md
index 4e95eaa6c4..1ad29a0820 100644
--- a/static/include/components/board/board-spis.md
+++ b/static/include/components/board/board-spis.md
@@ -10,7 +10,7 @@ To connect your board (controller) and a [component](/components/) that requires
{{% alert title="Important" color="note" %}}
You must also enable SPI on your board if it is not enabled by default.
-See your [board model's configuration instructions](/components/board/#configuration) if applicable.
+See your [board model's configuration instructions](/components/board/#supported-models) if applicable.
{{% /alert %}}
diff --git a/static/include/create-your-own-mr.md b/static/include/create-your-own-mr.md
new file mode 100644
index 0000000000..d846592ea6
--- /dev/null
+++ b/static/include/create-your-own-mr.md
@@ -0,0 +1,3 @@
+{{< alert title="Add support for other models" color="tip" >}}
+If none of the existing models fit your use case, you can [create a modular resource](/modular-resources/) to add support for it.
+{{< /alert >}}