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": "model" }{{/helpers.highlight}}
+

{{#helpers.highlight}}{ "attribute": "model" }{{/helpers.highlight}}

{{#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: ![Configuration of a right gpio motor in the Viam app config builder.](/tutorials/navigate-with-rover-base/right-motor-config-builder.png) 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:

@@ -11,5 +12,3 @@
-

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 >}}