From 73142a09e7aac1a487a0b933ef0d92882f5e7083 Mon Sep 17 00:00:00 2001 From: Naomi Pentrel <5212232+npentrel@users.noreply.github.com> Date: Fri, 1 Dec 2023 17:11:03 +0100 Subject: [PATCH] Update IA to move components and services (#2274) --- .github/workflows/check_python_methods.py | 2 +- README.md | 2 +- .../configure => }/components/arm/control.png | Bin .../components/arm/fake-arm-ui-config.png | Bin .../components/arm/ur5e-ui-config.png | Bin .../components/arm/xarm6-ui-config.png | Bin .../components/arm/xarm7-ui-config.png | Bin .../components/arm/xarmlite-ui-config.png | Bin .../arm/yahboom-dofbot-ui-config.png | Bin .../components/base/agilex-limo-ui-config.png | Bin .../components/base/base-control-tab.png | Bin .../components/base/base-json.png | Bin .../components/base/base-trk-rover-w-arm.png | Bin .../components/base/base-wiring-diagram.png | Bin .../components/base/fake-base-ui-config.png | Bin .../base/wheeled-base-ui-config.png | Bin .../components/board/beaglebone-ui-config.png | Bin .../components/board/board-comp-options.png | Bin .../components/board/board-gen-config.png | Bin .../board/customlinux-ui-config.png | Bin .../components/board/fake-ui-config.png | Bin .../components/board/jetson-ui-config.png | Bin .../components/board/numato-ui-config.png | Bin .../components/board/pca9685-ui-config.png | Bin .../components/board/pi-ui-config.png | Bin .../components/board/ti-ui-config.png | Bin .../components/board/upboard-ui-config.png | Bin .../camera/calibrate/example-images.png | Bin .../camera/camera_tutorial_copy_paste.png | Bin ...configure-align-color-depth-extrinsics.png | Bin ...configure-align-color-depth-homography.png | Bin .../camera/configure-dual-stream.png | Bin .../components/camera/configure-fake.png | Bin .../components/camera/configure-ffmpeg.png | Bin .../camera/configure-image-file.png | Bin .../camera/configure-join-color-depth.png | Bin .../camera/configure-join-pointclouds.png | Bin .../components/camera/configure-rtsp.png | Bin .../camera/configure-single-stream.png | Bin .../components/camera/configure-transform.png | Bin .../camera/configure-ultrasonic.png | Bin .../components/camera/configure-velodyne.png | Bin .../components/camera/configure-webcam.png | Bin .../camera/example_camera_image.png | Bin .../components/camera/fake-view.png | Bin .../components/component/model1-builder.png | Bin .../components/encoder/configure-am5.png | Bin .../components/encoder/configure-arduino.png | Bin .../components/encoder/configure-fake.png | Bin .../encoder/configure-incremental.png | Bin .../components/encoder/configure-single.png | Bin .../components/encoder/control.png | Bin .../components/encoder/create-am5.png | Bin .../components/encoder/create-arduino.png | Bin .../components/encoder/create-fake.png | Bin .../components/encoder/create-incremental.png | Bin .../components/encoder/create-single.png | Bin .../gantry/fake-gantry-ui-config.png | Bin .../components/gantry/gantry-control-tab.png | Bin .../components/gantry/gantry-illustration.png | Bin .../gantry/multi-axis-ui-config.png | Bin .../gantry/single-axis-ui-config.png | Bin .../generic/fake-generic-ui-config.png | Bin .../components/generic/generic-control.png | Bin .../gripper/fake-gripper-ui-config.png | Bin .../gripper/gripper-control-tab.png | Bin .../gripper/softrobotics-ui-config.png | Bin .../fake-input-controller-ui-config.png | Bin .../gamepad-input-controller-ui-config.png | Bin .../gpio-input-controller-ui-config.png | Bin .../input-controller-control-tab.png | Bin .../mux-input-controller-ui-config.png | Bin .../webgamepad-input-controller-ui-config.png | Bin .../components/motor/28byj48-config-ui.png | Bin .../components/motor/28byj48-wiring.png | Bin .../components/motor/control.png | Bin .../components/motor/dmc4000-config-ui.png | Bin .../components/motor/encoded-config-ui.png | Bin .../components/motor/fake-config-ui.png | Bin .../components/motor/gpio-config-ui.png | Bin .../motor/gpiostepper-config-ui.png | Bin .../motor/motor-brushed-dc-wiring.png | Bin .../motor/motor-brushless-dc-wiring.png | Bin .../motor/motor-encoded-dc-json.png | Bin .../motor/motor-encoded-dc-wiring.png | Bin .../components/motor/motor-gpio-json.png | Bin .../motor/motor-gpiostepper-json.png | Bin .../motor/motor-gpiostepper-wiring.png | Bin .../components/motor/roboclaw-ui-config.png | Bin .../components/motor/tmc5072-config-ui.png | Bin .../movement-sensor/adxl345-builder.png | Bin .../movement-sensor/fake-builder.png | Bin .../movement-sensor/gps-nmea-builder.png | Bin .../gps-nmea-rtk-pmtk-builder.png | Bin .../gps-nmea-rtk-serial-builder.png | Bin .../movement-sensor/imu-vectornav-builder.png | Bin .../movement-sensor/imu-wit-builder.png | Bin .../movement-sensor/merged-config-builder.png | Bin .../movement-sensor-control-tab-adxl345.png | Bin .../movement-sensor-control-tab-fake.png | Bin .../movement-sensor-control-tab-gps.png | Bin .../movement-sensor-control-tab-imu.png | Bin .../movement-sensor-control-tab-mpu6050.png | Bin .../movement-sensor-control-tab.png | Bin .../movement-sensor/mpu6050-builder.png | Bin .../visual-odometry-poster.jpg | Bin .../wheeled-odometry-builder.png | Bin .../power-sensor/fake-config-builder.png | Bin .../power-sensor/ina219-config-builder.png | Bin .../power-sensor/ina226-config-builder.png | Bin .../power-sensor/power-sensor-control.png | Bin .../power-sensor/renogy-config-builder.png | Bin .../sensor/bme280-sensor-ui-config.png | Bin .../sensor/ds18b20-sensor-ui-config.png | Bin .../sensor/fake-sensor-ui-config.png | Bin .../sensirion-sht3xd-sensor-ui-config.png | Bin .../components/sensor/sensor-control-tab.png | Bin .../sensor/ultrasonic-sensor-ui-config.png | Bin .../components/servo/fake-servo-ui-config.png | Bin .../components/servo/gpio-servo-ui-config.png | Bin .../components/servo/pi-servo-ui-config.png | Bin .../components/servo/servo-control-tab.png | Bin .../components/servo/servo-json.png | Bin .../components/servo/servo-wiring.png | Bin .../configure => }/services/added-model.png | Bin .../services/available-models.png | Bin .../configure => }/services/deploy-model.png | Bin .../configure => }/services/icons/base-rc.svg | 0 .../services/icons/data-capture.svg | 0 .../configure => }/services/icons/fleet.svg | 0 .../services/icons/frame-system.svg | 0 .../configure => }/services/icons/ml.svg | 0 .../configure => }/services/icons/motion.svg | 0 .../services/icons/navigation.svg | 0 .../configure => }/services/icons/sdk.svg | 0 .../configure => }/services/icons/sensor.svg | 0 .../configure => }/services/icons/slam.svg | 0 .../configure => }/services/icons/vision.svg | 0 .../services/model-on-camera.png | Bin docs/_index.md | 14 +-- docs/appendix/_index.md | 2 +- docs/appendix/changelog.md | 28 ++--- .../glossary/api-namespace-triplet.md | 2 +- docs/appendix/glossary/base.md | 4 +- docs/appendix/glossary/board.md | 4 +- docs/appendix/glossary/component.md | 4 +- docs/appendix/glossary/gantry.md | 2 +- docs/appendix/glossary/model.md | 2 +- docs/appendix/glossary/service.md | 4 +- docs/appendix/learning-resources.md | 6 +- docs/appendix/troubleshooting.md | 6 +- docs/build/_index.md | 2 +- docs/build/configure/_index.md | 10 +- docs/build/configure/parts-and-remotes.md | 2 +- docs/build/micro-rdk/base/_index.md | 8 +- docs/build/micro-rdk/board/_index.md | 22 ++-- docs/build/micro-rdk/board/esp32.md | 6 +- docs/build/micro-rdk/encoder/_index.md | 10 +- docs/build/micro-rdk/encoder/incremental.md | 2 +- docs/build/micro-rdk/encoder/single.md | 6 +- docs/build/micro-rdk/motor/_index.md | 14 +-- docs/build/micro-rdk/motor/gpio.md | 6 +- .../build/micro-rdk/movement-sensor/_index.md | 16 +-- .../movement-sensor/accel-adxl345.md | 4 +- .../micro-rdk/movement-sensor/gyro-mpu6050.md | 6 +- docs/build/micro-rdk/servo/_index.md | 10 +- docs/build/micro-rdk/servo/gpio.md | 2 +- docs/build/program/_index.md | 4 +- docs/build/program/apis/_index.md | 40 +++--- docs/build/program/apis/data-client.md | 2 +- docs/build/program/apis/sessions.md | 2 +- docs/build/program/debug.md | 2 +- docs/build/program/python-venv.md | 2 +- docs/build/program/run.md | 2 +- docs/build/program/use-extra-params.md | 8 +- .../configure => }/components/_index.md | 2 +- .../configure => }/components/arm/_index.md | 0 .../configure => }/components/arm/eva.md | 0 .../configure => }/components/arm/fake.md | 2 +- .../configure => }/components/arm/ur5e.md | 2 +- .../configure => }/components/arm/xarm6.md | 2 +- .../configure => }/components/arm/xarm7.md | 2 +- .../configure => }/components/arm/xarmlite.md | 2 +- .../components/arm/yahboom-dofbot.md | 2 +- .../configure => }/components/base/_index.md | 6 +- .../configure => }/components/base/boat.md | 6 +- .../configure => }/components/base/fake.md | 2 +- .../configure => }/components/base/wheeled.md | 8 +- .../configure => }/components/board/_index.md | 18 +-- .../components/board/beaglebone.md | 2 +- .../components/board/customlinux.md | 4 +- .../configure => }/components/board/fake.md | 2 +- .../configure => }/components/board/jetson.md | 2 +- .../configure => }/components/board/numato.md | 2 +- .../components/board/pca9685.md | 2 +- .../configure => }/components/board/pi.md | 0 .../configure => }/components/board/ti.md | 2 +- .../components/board/upboard.md | 6 +- .../components/camera/_index.md | 0 .../camera/align-color-depth-extrinsics.md | 2 +- .../camera/align-color-depth-homography.md | 2 +- .../components/camera/calibrate.md | 6 +- .../components/camera/dual-stream.md | 2 +- .../configure => }/components/camera/fake.md | 4 +- .../components/camera/ffmpeg.md | 2 +- .../components/camera/image-file.md | 2 +- .../components/camera/join-color-depth.md | 2 +- .../components/camera/join-pointclouds.md | 2 +- .../configure => }/components/camera/rtsp.md | 4 +- .../components/camera/single-stream.md | 2 +- .../components/camera/transform.md | 2 +- .../components/camera/ultrasonic.md | 6 +- .../components/camera/velodyne.md | 2 +- .../components/camera/webcam.md | 2 +- .../components/component/_index.md | 0 .../components/component/model1.md | 4 +- .../components/encoder/_index.md | 2 +- .../components/encoder/ams-as5048.md | 12 +- .../components/encoder/arduino.md | 2 +- .../configure => }/components/encoder/fake.md | 4 +- .../components/encoder/incremental.md | 4 +- .../components/encoder/single.md | 8 +- .../components/gantry/_index.md | 10 +- .../configure => }/components/gantry/fake.md | 2 +- .../components/gantry/multi-axis.md | 6 +- .../components/gantry/single-axis.md | 10 +- .../components/generic/_index.md | 6 +- .../configure => }/components/generic/fake.md | 2 +- .../components/gripper/_index.md | 0 .../configure => }/components/gripper/fake.md | 2 +- .../components/gripper/softrobotics.md | 6 +- .../components/input-controller/_index.md | 2 +- .../components/input-controller/fake.md | 2 +- .../components/input-controller/gamepad.md | 2 +- .../components/input-controller/gpio.md | 2 +- .../components/input-controller/mux.md | 2 +- .../components/input-controller/webgamepad.md | 2 +- .../components/motor/28byj48.md | 10 +- .../configure => }/components/motor/_index.md | 2 +- .../components/motor/dmc4000.md | 6 +- .../configure => }/components/motor/fake.md | 20 +-- .../components/motor/gpio/_index.md | 20 +-- .../components/motor/gpio/encoded-motor.md | 18 +-- .../components/motor/gpiostepper.md | 12 +- .../components/motor/roboclaw.md | 4 +- .../components/motor/tmc5072.md | 10 +- .../components/movement-sensor/_index.md | 8 +- .../components/movement-sensor/adxl345.md | 10 +- .../components/movement-sensor/cameramono.md | 4 +- .../components/movement-sensor/fake.md | 4 +- .../components/movement-sensor/gps/_index.md | 2 +- .../movement-sensor/gps/gps-nmea-rtk-pmtk.md | 10 +- .../gps/gps-nmea-rtk-serial.md | 6 +- .../movement-sensor/gps/gps-nmea.md | 10 +- .../components/movement-sensor/imu/_index.md | 2 +- .../movement-sensor/imu/imu-vectornav.md | 8 +- .../components/movement-sensor/imu/imu-wit.md | 4 +- .../components/movement-sensor/merged.md | 10 +- .../components/movement-sensor/mpu6050.md | 8 +- .../movement-sensor/viam-visual-odometry.md | 20 +-- .../movement-sensor/wheeled-odometry.md | 22 ++-- .../configure => }/components/pose-tracker.md | 0 .../components/power-sensor/_index.md | 0 .../components/power-sensor/fake.md | 2 +- .../components/power-sensor/ina219.md | 4 +- .../components/power-sensor/ina226.md | 4 +- .../components/power-sensor/renogy.md | 2 +- .../components/realsense-cam.md | 0 .../components/sensor/_index.md | 8 +- .../components/sensor/bme280.md | 6 +- .../components/sensor/ds18b20.md | 2 +- .../configure => }/components/sensor/fake.md | 2 +- .../components/sensor/sensirion-sht3xd.md | 4 +- .../components/sensor/ultrasonic.md | 6 +- .../configure => }/components/servo/_index.md | 16 +-- .../configure => }/components/servo/fake.md | 2 +- .../configure => }/components/servo/gpio.md | 8 +- .../configure => }/components/servo/pi.md | 10 +- docs/data/_index.md | 24 ++-- docs/data/capture.md | 2 +- docs/data/cloud-sync.md | 2 +- docs/data/query.md | 4 +- docs/data/view.md | 2 +- docs/fleet/_index.md | 2 +- docs/fleet/cli.md | 2 +- docs/get-started/installation/_index.md | 4 +- .../prepare/jetson-agx-orin-setup.md | 2 +- .../installation/prepare/pumpkin.md | 4 +- .../try-viam/rover-resources/_index.md | 2 +- .../rover-tutorial-fragments.md | 12 +- .../rover-resources/rover-tutorial.md | 12 +- .../get-started/try-viam/try-viam-tutorial.md | 24 ++-- docs/get-started/viam.md | 6 +- docs/internals/_index.md | 2 +- docs/internals/kinematic-chain-config.md | 4 +- docs/internals/local-configuration-file.md | 4 +- docs/ml/_index.md | 4 +- docs/ml/deploy.md | 10 +- docs/ml/vision/_index.md | 6 +- docs/ml/vision/classification.md | 6 +- docs/ml/vision/detection.md | 2 +- docs/ml/vision/segmentation.md | 8 +- docs/mobility/_index.md | 2 +- docs/mobility/base-rc/_index.md | 26 ++-- docs/mobility/frame-system/_index.md | 24 ++-- docs/mobility/frame-system/frame-config.md | 2 +- .../frame-system/nested-frame-config.md | 2 +- docs/mobility/motion/_index.md | 30 ++--- docs/mobility/navigation/_index.md | 116 +++++++++--------- docs/mobility/sensors.md | 8 +- docs/mobility/slam/_index.md | 8 +- docs/mobility/slam/cartographer/_index.md | 2 +- docs/mobility/slam/orbslamv3/_index.md | 10 +- docs/platform.md | 2 +- docs/registry/_index.md | 2 +- docs/registry/advanced/_index.md | 4 +- docs/registry/advanced/create-subtype.md | 2 +- .../advanced/custom-components-remotes.md | 4 +- docs/registry/advanced/mlmodel-design.md | 2 +- docs/registry/configure.md | 22 ++-- docs/registry/create/_index.md | 8 +- docs/registry/examples/_index.md | 2 +- docs/registry/examples/csi.md | 2 +- docs/registry/examples/custom-arm.md | 10 +- docs/registry/examples/odrive.md | 10 +- docs/registry/examples/rplidar.md | 2 +- docs/registry/examples/tflite-module.md | 2 +- docs/registry/examples/triton.md | 4 +- docs/sdks/_index.md | 2 +- docs/{build/configure => }/services.md | 2 +- docs/tutorials/_index.md | 2 +- .../tutorials/configure/build-a-mock-robot.md | 16 +-- docs/tutorials/configure/pet-photographer.md | 14 +-- docs/tutorials/configure/scuttlebot.md | 10 +- docs/tutorials/control/scuttle-gamepad.md | 8 +- docs/tutorials/control/yahboom-rover.md | 10 +- .../controlling-an-intermode-rover-canbus.md | 10 +- docs/tutorials/custom/custom-base-dog.md | 12 +- docs/tutorials/get-started/blink-an-led.md | 4 +- docs/tutorials/get-started/confetti-bot.md | 4 +- docs/tutorials/get-started/lazy-susan.md | 22 ++-- .../tutorials/get-started/servo-mousemover.md | 6 +- docs/tutorials/get-started/try-viam-sdk.md | 6 +- docs/tutorials/projects/bedtime-songs-bot.md | 6 +- .../projects/build-an-outdoor-rover.md | 18 +-- docs/tutorials/projects/claw-game.md | 8 +- docs/tutorials/projects/foam-dart-launcher.md | 14 +-- docs/tutorials/projects/guardian.md | 12 +- .../projects/integrating-viam-with-openai.md | 10 +- docs/tutorials/projects/light-up.md | 2 +- .../projects/make-a-plant-watering-robot.md | 16 +-- .../projects/modernize-retro-robot.md | 14 +-- .../tutorials/projects/pet-treat-dispenser.md | 12 +- .../tutorials/projects/send-security-photo.md | 6 +- docs/tutorials/projects/tipsy.md | 14 +-- .../accessing-and-moving-robot-arm.md | 18 +-- .../services/color-detection-scuttle.md | 6 +- docs/tutorials/services/constrain-motion.md | 4 +- .../services/data-mlmodel-tutorial.md | 6 +- .../services/navigate-with-rover-base.md | 52 ++++---- .../services/plan-motion-with-arm-gripper.md | 6 +- .../services/try-viam-color-detection.md | 6 +- .../services/webcam-line-follower-robot.md | 16 +-- docs/use-cases/_index.md | 2 +- .../movement-sensor/visual-odometry.webm | Bin .../include/components/apis/analogreader.md | 8 +- static/include/components/apis/arm.md | 20 +-- static/include/components/apis/base.md | 20 +-- static/include/components/apis/board.md | 24 ++-- static/include/components/apis/camera.md | 14 +-- static/include/components/apis/component.md | 10 +- .../components/apis/digitalinterrupt.md | 14 +-- static/include/components/apis/encoder.md | 12 +- static/include/components/apis/gantry.md | 16 +-- static/include/components/apis/generic.md | 6 +- static/include/components/apis/gpiopin.md | 18 +-- static/include/components/apis/gripper.md | 14 +-- .../components/apis/input-controller.md | 14 +-- static/include/components/apis/motor.md | 24 ++-- .../components/apis/movement-sensor.md | 24 ++-- .../include/components/apis/power-sensor.md | 14 +-- static/include/components/apis/sensor.md | 8 +- static/include/components/apis/servo.md | 12 +- .../include/components/board/board-analogs.md | 4 +- .../board/board-digital-interrupts.md | 6 +- static/include/components/board/board-i2cs.md | 4 +- static/include/components/board/board-spis.md | 4 +- .../components/camera-model-next-steps.md | 6 +- static/include/components/camera-sample.md | 2 +- .../components/camera-view-camera-stream.md | 2 +- .../components/test-control/arm-control.md | 2 +- .../components/test-control/base-control.md | 4 +- .../test-control/encoder-control.md | 2 +- .../components/test-control/gantry-control.md | 2 +- .../test-control/generic-control.md | 4 +- .../test-control/gripper-control.md | 2 +- .../test-control/input-controller-control.md | 2 +- .../components/test-control/motor-control.md | 2 +- .../movement-sensor-gps-control.md | 2 +- .../movement-sensor-imu-control.md | 2 +- .../test-control/power-sensor-control.md | 2 +- .../components/test-control/sensor-control.md | 2 +- .../components/test-control/servo-control.md | 2 +- .../components/ultrasonic-attributes.md | 6 +- static/include/services/apis/motion.md | 4 +- 405 files changed, 980 insertions(+), 980 deletions(-) rename assets/{build/configure => }/components/arm/control.png (100%) rename assets/{build/configure => }/components/arm/fake-arm-ui-config.png (100%) rename assets/{build/configure => }/components/arm/ur5e-ui-config.png (100%) rename assets/{build/configure => }/components/arm/xarm6-ui-config.png (100%) rename assets/{build/configure => }/components/arm/xarm7-ui-config.png (100%) rename assets/{build/configure => }/components/arm/xarmlite-ui-config.png (100%) rename assets/{build/configure => }/components/arm/yahboom-dofbot-ui-config.png (100%) rename assets/{build/configure => }/components/base/agilex-limo-ui-config.png (100%) rename assets/{build/configure => }/components/base/base-control-tab.png (100%) rename assets/{build/configure => }/components/base/base-json.png (100%) rename assets/{build/configure => }/components/base/base-trk-rover-w-arm.png (100%) rename assets/{build/configure => }/components/base/base-wiring-diagram.png (100%) rename assets/{build/configure => }/components/base/fake-base-ui-config.png (100%) rename assets/{build/configure => }/components/base/wheeled-base-ui-config.png (100%) rename assets/{build/configure => }/components/board/beaglebone-ui-config.png (100%) rename assets/{build/configure => }/components/board/board-comp-options.png (100%) rename assets/{build/configure => }/components/board/board-gen-config.png (100%) rename assets/{build/configure => }/components/board/customlinux-ui-config.png (100%) rename assets/{build/configure => }/components/board/fake-ui-config.png (100%) rename assets/{build/configure => }/components/board/jetson-ui-config.png (100%) rename assets/{build/configure => }/components/board/numato-ui-config.png (100%) rename assets/{build/configure => }/components/board/pca9685-ui-config.png (100%) rename assets/{build/configure => }/components/board/pi-ui-config.png (100%) rename assets/{build/configure => }/components/board/ti-ui-config.png (100%) rename assets/{build/configure => }/components/board/upboard-ui-config.png (100%) rename assets/{build/configure => }/components/camera/calibrate/example-images.png (100%) rename assets/{build/configure => }/components/camera/camera_tutorial_copy_paste.png (100%) rename assets/{build/configure => }/components/camera/configure-align-color-depth-extrinsics.png (100%) rename assets/{build/configure => }/components/camera/configure-align-color-depth-homography.png (100%) rename assets/{build/configure => }/components/camera/configure-dual-stream.png (100%) rename assets/{build/configure => }/components/camera/configure-fake.png (100%) rename assets/{build/configure => }/components/camera/configure-ffmpeg.png (100%) rename assets/{build/configure => }/components/camera/configure-image-file.png (100%) rename assets/{build/configure => }/components/camera/configure-join-color-depth.png (100%) rename assets/{build/configure => }/components/camera/configure-join-pointclouds.png (100%) rename assets/{build/configure => }/components/camera/configure-rtsp.png (100%) rename assets/{build/configure => }/components/camera/configure-single-stream.png (100%) rename assets/{build/configure => }/components/camera/configure-transform.png (100%) rename assets/{build/configure => }/components/camera/configure-ultrasonic.png (100%) rename assets/{build/configure => }/components/camera/configure-velodyne.png (100%) rename assets/{build/configure => }/components/camera/configure-webcam.png (100%) rename assets/{build/configure => }/components/camera/example_camera_image.png (100%) rename assets/{build/configure => }/components/camera/fake-view.png (100%) rename assets/{build/configure => }/components/component/model1-builder.png (100%) rename assets/{build/configure => }/components/encoder/configure-am5.png (100%) rename assets/{build/configure => }/components/encoder/configure-arduino.png (100%) rename assets/{build/configure => }/components/encoder/configure-fake.png (100%) rename assets/{build/configure => }/components/encoder/configure-incremental.png (100%) rename assets/{build/configure => }/components/encoder/configure-single.png (100%) rename assets/{build/configure => }/components/encoder/control.png (100%) rename assets/{build/configure => }/components/encoder/create-am5.png (100%) rename assets/{build/configure => }/components/encoder/create-arduino.png (100%) rename assets/{build/configure => }/components/encoder/create-fake.png (100%) rename assets/{build/configure => }/components/encoder/create-incremental.png (100%) rename assets/{build/configure => }/components/encoder/create-single.png (100%) rename assets/{build/configure => }/components/gantry/fake-gantry-ui-config.png (100%) rename assets/{build/configure => }/components/gantry/gantry-control-tab.png (100%) rename assets/{build/configure => }/components/gantry/gantry-illustration.png (100%) rename assets/{build/configure => }/components/gantry/multi-axis-ui-config.png (100%) rename assets/{build/configure => }/components/gantry/single-axis-ui-config.png (100%) rename assets/{build/configure => }/components/generic/fake-generic-ui-config.png (100%) rename assets/{build/configure => }/components/generic/generic-control.png (100%) rename assets/{build/configure => }/components/gripper/fake-gripper-ui-config.png (100%) rename assets/{build/configure => }/components/gripper/gripper-control-tab.png (100%) rename assets/{build/configure => }/components/gripper/softrobotics-ui-config.png (100%) rename assets/{build/configure => }/components/input-controller/fake-input-controller-ui-config.png (100%) rename assets/{build/configure => }/components/input-controller/gamepad-input-controller-ui-config.png (100%) rename assets/{build/configure => }/components/input-controller/gpio-input-controller-ui-config.png (100%) rename assets/{build/configure => }/components/input-controller/input-controller-control-tab.png (100%) rename assets/{build/configure => }/components/input-controller/mux-input-controller-ui-config.png (100%) rename assets/{build/configure => }/components/input-controller/webgamepad-input-controller-ui-config.png (100%) rename assets/{build/configure => }/components/motor/28byj48-config-ui.png (100%) rename assets/{build/configure => }/components/motor/28byj48-wiring.png (100%) rename assets/{build/configure => }/components/motor/control.png (100%) rename assets/{build/configure => }/components/motor/dmc4000-config-ui.png (100%) rename assets/{build/configure => }/components/motor/encoded-config-ui.png (100%) rename assets/{build/configure => }/components/motor/fake-config-ui.png (100%) rename assets/{build/configure => }/components/motor/gpio-config-ui.png (100%) rename assets/{build/configure => }/components/motor/gpiostepper-config-ui.png (100%) rename assets/{build/configure => }/components/motor/motor-brushed-dc-wiring.png (100%) rename assets/{build/configure => }/components/motor/motor-brushless-dc-wiring.png (100%) rename assets/{build/configure => }/components/motor/motor-encoded-dc-json.png (100%) rename assets/{build/configure => }/components/motor/motor-encoded-dc-wiring.png (100%) rename assets/{build/configure => }/components/motor/motor-gpio-json.png (100%) rename assets/{build/configure => }/components/motor/motor-gpiostepper-json.png (100%) rename assets/{build/configure => }/components/motor/motor-gpiostepper-wiring.png (100%) rename assets/{build/configure => }/components/motor/roboclaw-ui-config.png (100%) rename assets/{build/configure => }/components/motor/tmc5072-config-ui.png (100%) rename assets/{build/configure => }/components/movement-sensor/adxl345-builder.png (100%) rename assets/{build/configure => }/components/movement-sensor/fake-builder.png (100%) rename assets/{build/configure => }/components/movement-sensor/gps-nmea-builder.png (100%) rename assets/{build/configure => }/components/movement-sensor/gps-nmea-rtk-pmtk-builder.png (100%) rename assets/{build/configure => }/components/movement-sensor/gps-nmea-rtk-serial-builder.png (100%) rename assets/{build/configure => }/components/movement-sensor/imu-vectornav-builder.png (100%) rename assets/{build/configure => }/components/movement-sensor/imu-wit-builder.png (100%) rename assets/{build/configure => }/components/movement-sensor/merged-config-builder.png (100%) rename assets/{build/configure => }/components/movement-sensor/movement-sensor-control-tab-adxl345.png (100%) rename assets/{build/configure => }/components/movement-sensor/movement-sensor-control-tab-fake.png (100%) rename assets/{build/configure => }/components/movement-sensor/movement-sensor-control-tab-gps.png (100%) rename assets/{build/configure => }/components/movement-sensor/movement-sensor-control-tab-imu.png (100%) rename assets/{build/configure => }/components/movement-sensor/movement-sensor-control-tab-mpu6050.png (100%) rename assets/{build/configure => }/components/movement-sensor/movement-sensor-control-tab.png (100%) rename assets/{build/configure => }/components/movement-sensor/mpu6050-builder.png (100%) rename assets/{build/configure => }/components/movement-sensor/visual-odometry-poster.jpg (100%) rename assets/{build/configure => }/components/movement-sensor/wheeled-odometry-builder.png (100%) rename assets/{build/configure => }/components/power-sensor/fake-config-builder.png (100%) rename assets/{build/configure => }/components/power-sensor/ina219-config-builder.png (100%) rename assets/{build/configure => }/components/power-sensor/ina226-config-builder.png (100%) rename assets/{build/configure => }/components/power-sensor/power-sensor-control.png (100%) rename assets/{build/configure => }/components/power-sensor/renogy-config-builder.png (100%) rename assets/{build/configure => }/components/sensor/bme280-sensor-ui-config.png (100%) rename assets/{build/configure => }/components/sensor/ds18b20-sensor-ui-config.png (100%) rename assets/{build/configure => }/components/sensor/fake-sensor-ui-config.png (100%) rename assets/{build/configure => }/components/sensor/sensirion-sht3xd-sensor-ui-config.png (100%) rename assets/{build/configure => }/components/sensor/sensor-control-tab.png (100%) rename assets/{build/configure => }/components/sensor/ultrasonic-sensor-ui-config.png (100%) rename assets/{build/configure => }/components/servo/fake-servo-ui-config.png (100%) rename assets/{build/configure => }/components/servo/gpio-servo-ui-config.png (100%) rename assets/{build/configure => }/components/servo/pi-servo-ui-config.png (100%) rename assets/{build/configure => }/components/servo/servo-control-tab.png (100%) rename assets/{build/configure => }/components/servo/servo-json.png (100%) rename assets/{build/configure => }/components/servo/servo-wiring.png (100%) rename assets/{build/configure => }/services/added-model.png (100%) rename assets/{build/configure => }/services/available-models.png (100%) rename assets/{build/configure => }/services/deploy-model.png (100%) rename assets/{build/configure => }/services/icons/base-rc.svg (100%) rename assets/{build/configure => }/services/icons/data-capture.svg (100%) rename assets/{build/configure => }/services/icons/fleet.svg (100%) rename assets/{build/configure => }/services/icons/frame-system.svg (100%) rename assets/{build/configure => }/services/icons/ml.svg (100%) rename assets/{build/configure => }/services/icons/motion.svg (100%) rename assets/{build/configure => }/services/icons/navigation.svg (100%) rename assets/{build/configure => }/services/icons/sdk.svg (100%) rename assets/{build/configure => }/services/icons/sensor.svg (100%) rename assets/{build/configure => }/services/icons/slam.svg (100%) rename assets/{build/configure => }/services/icons/vision.svg (100%) rename assets/{build/configure => }/services/model-on-camera.png (100%) rename docs/{build/configure => }/components/_index.md (97%) rename docs/{build/configure => }/components/arm/_index.md (100%) rename docs/{build/configure => }/components/arm/eva.md (100%) rename docs/{build/configure => }/components/arm/fake.md (97%) rename docs/{build/configure => }/components/arm/ur5e.md (96%) rename docs/{build/configure => }/components/arm/xarm6.md (97%) rename docs/{build/configure => }/components/arm/xarm7.md (97%) rename docs/{build/configure => }/components/arm/xarmlite.md (97%) rename docs/{build/configure => }/components/arm/yahboom-dofbot.md (95%) rename docs/{build/configure => }/components/base/_index.md (99%) rename docs/{build/configure => }/components/base/boat.md (86%) rename docs/{build/configure => }/components/base/fake.md (95%) rename docs/{build/configure => }/components/base/wheeled.md (85%) rename docs/{build/configure => }/components/board/_index.md (98%) rename docs/{build/configure => }/components/board/beaglebone.md (97%) rename docs/{build/configure => }/components/board/customlinux.md (98%) rename docs/{build/configure => }/components/board/fake.md (97%) rename docs/{build/configure => }/components/board/jetson.md (98%) rename docs/{build/configure => }/components/board/numato.md (97%) rename docs/{build/configure => }/components/board/pca9685.md (96%) rename docs/{build/configure => }/components/board/pi.md (100%) rename docs/{build/configure => }/components/board/ti.md (97%) rename docs/{build/configure => }/components/board/upboard.md (95%) rename docs/{build/configure => }/components/camera/_index.md (100%) rename docs/{build/configure => }/components/camera/align-color-depth-extrinsics.md (98%) rename docs/{build/configure => }/components/camera/align-color-depth-homography.md (98%) rename docs/{build/configure => }/components/camera/calibrate.md (91%) rename docs/{build/configure => }/components/camera/dual-stream.md (98%) rename docs/{build/configure => }/components/camera/fake.md (93%) rename docs/{build/configure => }/components/camera/ffmpeg.md (98%) rename docs/{build/configure => }/components/camera/image-file.md (98%) rename docs/{build/configure => }/components/camera/join-color-depth.md (98%) rename docs/{build/configure => }/components/camera/join-pointclouds.md (97%) rename docs/{build/configure => }/components/camera/rtsp.md (95%) rename docs/{build/configure => }/components/camera/single-stream.md (98%) rename docs/{build/configure => }/components/camera/transform.md (99%) rename docs/{build/configure => }/components/camera/ultrasonic.md (91%) rename docs/{build/configure => }/components/camera/velodyne.md (91%) rename docs/{build/configure => }/components/camera/webcam.md (97%) rename docs/{build/configure => }/components/component/_index.md (100%) rename docs/{build/configure => }/components/component/model1.md (93%) rename docs/{build/configure => }/components/encoder/_index.md (99%) rename docs/{build/configure => }/components/encoder/ams-as5048.md (62%) rename docs/{build/configure => }/components/encoder/arduino.md (96%) rename docs/{build/configure => }/components/encoder/fake.md (91%) rename docs/{build/configure => }/components/encoder/incremental.md (93%) rename docs/{build/configure => }/components/encoder/single.md (80%) rename docs/{build/configure => }/components/gantry/_index.md (96%) rename docs/{build/configure => }/components/gantry/fake.md (94%) rename docs/{build/configure => }/components/gantry/multi-axis.md (94%) rename docs/{build/configure => }/components/gantry/single-axis.md (81%) rename docs/{build/configure => }/components/generic/_index.md (94%) rename docs/{build/configure => }/components/generic/fake.md (93%) rename docs/{build/configure => }/components/gripper/_index.md (100%) rename docs/{build/configure => }/components/gripper/fake.md (94%) rename docs/{build/configure => }/components/gripper/softrobotics.md (89%) rename docs/{build/configure => }/components/input-controller/_index.md (99%) rename docs/{build/configure => }/components/input-controller/fake.md (95%) rename docs/{build/configure => }/components/input-controller/gamepad.md (96%) rename docs/{build/configure => }/components/input-controller/gpio.md (98%) rename docs/{build/configure => }/components/input-controller/mux.md (97%) rename docs/{build/configure => }/components/input-controller/webgamepad.md (93%) rename docs/{build/configure => }/components/motor/28byj48.md (89%) rename docs/{build/configure => }/components/motor/_index.md (99%) rename docs/{build/configure => }/components/motor/dmc4000.md (95%) rename docs/{build/configure => }/components/motor/fake.md (78%) rename docs/{build/configure => }/components/motor/gpio/_index.md (86%) rename docs/{build/configure => }/components/motor/gpio/encoded-motor.md (77%) rename docs/{build/configure => }/components/motor/gpiostepper.md (87%) rename docs/{build/configure => }/components/motor/roboclaw.md (94%) rename docs/{build/configure => }/components/motor/tmc5072.md (90%) rename docs/{build/configure => }/components/movement-sensor/_index.md (98%) rename docs/{build/configure => }/components/movement-sensor/adxl345.md (87%) rename docs/{build/configure => }/components/movement-sensor/cameramono.md (93%) rename docs/{build/configure => }/components/movement-sensor/fake.md (85%) rename docs/{build/configure => }/components/movement-sensor/gps/_index.md (74%) rename docs/{build/configure => }/components/movement-sensor/gps/gps-nmea-rtk-pmtk.md (92%) rename docs/{build/configure => }/components/movement-sensor/gps/gps-nmea-rtk-serial.md (95%) rename docs/{build/configure => }/components/movement-sensor/gps/gps-nmea.md (93%) rename docs/{build/configure => }/components/movement-sensor/imu/_index.md (65%) rename docs/{build/configure => }/components/movement-sensor/imu/imu-vectornav.md (89%) rename docs/{build/configure => }/components/movement-sensor/imu/imu-wit.md (94%) rename docs/{build/configure => }/components/movement-sensor/merged.md (87%) rename docs/{build/configure => }/components/movement-sensor/mpu6050.md (84%) rename docs/{build/configure => }/components/movement-sensor/viam-visual-odometry.md (89%) rename docs/{build/configure => }/components/movement-sensor/wheeled-odometry.md (77%) rename docs/{build/configure => }/components/pose-tracker.md (100%) rename docs/{build/configure => }/components/power-sensor/_index.md (100%) rename docs/{build/configure => }/components/power-sensor/fake.md (93%) rename docs/{build/configure => }/components/power-sensor/ina219.md (92%) rename docs/{build/configure => }/components/power-sensor/ina226.md (91%) rename docs/{build/configure => }/components/power-sensor/renogy.md (95%) rename docs/{build/configure => }/components/realsense-cam.md (100%) rename docs/{build/configure => }/components/sensor/_index.md (95%) rename docs/{build/configure => }/components/sensor/bme280.md (89%) rename docs/{build/configure => }/components/sensor/ds18b20.md (97%) rename docs/{build/configure => }/components/sensor/fake.md (93%) rename docs/{build/configure => }/components/sensor/sensirion-sht3xd.md (93%) rename docs/{build/configure => }/components/sensor/ultrasonic.md (91%) rename docs/{build/configure => }/components/servo/_index.md (95%) rename docs/{build/configure => }/components/servo/fake.md (94%) rename docs/{build/configure => }/components/servo/gpio.md (93%) rename docs/{build/configure => }/components/servo/pi.md (89%) rename docs/{build/configure => }/services.md (98%) rename static/{build/configure => }/components/movement-sensor/visual-odometry.webm (100%) diff --git a/.github/workflows/check_python_methods.py b/.github/workflows/check_python_methods.py index 275748876e..73f1c8d2d9 100644 --- a/.github/workflows/check_python_methods.py +++ b/.github/workflows/check_python_methods.py @@ -232,7 +232,7 @@ def parse(type, names): with open(f"dist/{services_page_mapping[service]}/index.html") as fp: soup2 = BeautifulSoup(fp, 'html.parser') else: - with open(f"dist/build/configure/{type}/{service}/index.html") as fp: + with open(f"dist/{type}/{service}/index.html") as fp: soup2 = BeautifulSoup(fp, 'html.parser') else: if type == "app" or type == "robot": diff --git a/README.md b/README.md index 1cf5859526..709686b4bd 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ > **Note** > Looking to contribute? Check out the [Contributor Guide](https://docs.viam.com/appendix/contributing/). -> For help knowing what and how to write, check out our templates: our [tutorial template](docs/tutorials/template/) and [component page template](docs/build/configure/components/component/) are accessible on the site when building the docs in Draft mode, or accessible here on GitHub. +> For help knowing what and how to write, check out our templates: our [tutorial template](docs/tutorials/template/) and [component page template](docs/components/component/) are accessible on the site when building the docs in Draft mode, or accessible here on GitHub. ## Build the docs locally diff --git a/assets/build/configure/components/arm/control.png b/assets/components/arm/control.png similarity index 100% rename from assets/build/configure/components/arm/control.png rename to assets/components/arm/control.png diff --git a/assets/build/configure/components/arm/fake-arm-ui-config.png b/assets/components/arm/fake-arm-ui-config.png similarity index 100% rename from assets/build/configure/components/arm/fake-arm-ui-config.png rename to assets/components/arm/fake-arm-ui-config.png diff --git a/assets/build/configure/components/arm/ur5e-ui-config.png b/assets/components/arm/ur5e-ui-config.png similarity index 100% rename from assets/build/configure/components/arm/ur5e-ui-config.png rename to assets/components/arm/ur5e-ui-config.png diff --git a/assets/build/configure/components/arm/xarm6-ui-config.png b/assets/components/arm/xarm6-ui-config.png similarity index 100% rename from assets/build/configure/components/arm/xarm6-ui-config.png rename to assets/components/arm/xarm6-ui-config.png diff --git a/assets/build/configure/components/arm/xarm7-ui-config.png b/assets/components/arm/xarm7-ui-config.png similarity index 100% rename from assets/build/configure/components/arm/xarm7-ui-config.png rename to assets/components/arm/xarm7-ui-config.png diff --git a/assets/build/configure/components/arm/xarmlite-ui-config.png b/assets/components/arm/xarmlite-ui-config.png similarity index 100% rename from assets/build/configure/components/arm/xarmlite-ui-config.png rename to assets/components/arm/xarmlite-ui-config.png diff --git a/assets/build/configure/components/arm/yahboom-dofbot-ui-config.png b/assets/components/arm/yahboom-dofbot-ui-config.png similarity index 100% rename from assets/build/configure/components/arm/yahboom-dofbot-ui-config.png rename to assets/components/arm/yahboom-dofbot-ui-config.png diff --git a/assets/build/configure/components/base/agilex-limo-ui-config.png b/assets/components/base/agilex-limo-ui-config.png similarity index 100% rename from assets/build/configure/components/base/agilex-limo-ui-config.png rename to assets/components/base/agilex-limo-ui-config.png diff --git a/assets/build/configure/components/base/base-control-tab.png b/assets/components/base/base-control-tab.png similarity index 100% rename from assets/build/configure/components/base/base-control-tab.png rename to assets/components/base/base-control-tab.png diff --git a/assets/build/configure/components/base/base-json.png b/assets/components/base/base-json.png similarity index 100% rename from assets/build/configure/components/base/base-json.png rename to assets/components/base/base-json.png diff --git a/assets/build/configure/components/base/base-trk-rover-w-arm.png b/assets/components/base/base-trk-rover-w-arm.png similarity index 100% rename from assets/build/configure/components/base/base-trk-rover-w-arm.png rename to assets/components/base/base-trk-rover-w-arm.png diff --git a/assets/build/configure/components/base/base-wiring-diagram.png b/assets/components/base/base-wiring-diagram.png similarity index 100% rename from assets/build/configure/components/base/base-wiring-diagram.png rename to assets/components/base/base-wiring-diagram.png diff --git a/assets/build/configure/components/base/fake-base-ui-config.png b/assets/components/base/fake-base-ui-config.png similarity index 100% rename from assets/build/configure/components/base/fake-base-ui-config.png rename to assets/components/base/fake-base-ui-config.png diff --git a/assets/build/configure/components/base/wheeled-base-ui-config.png b/assets/components/base/wheeled-base-ui-config.png similarity index 100% rename from assets/build/configure/components/base/wheeled-base-ui-config.png rename to assets/components/base/wheeled-base-ui-config.png diff --git a/assets/build/configure/components/board/beaglebone-ui-config.png b/assets/components/board/beaglebone-ui-config.png similarity index 100% rename from assets/build/configure/components/board/beaglebone-ui-config.png rename to assets/components/board/beaglebone-ui-config.png diff --git a/assets/build/configure/components/board/board-comp-options.png b/assets/components/board/board-comp-options.png similarity index 100% rename from assets/build/configure/components/board/board-comp-options.png rename to assets/components/board/board-comp-options.png diff --git a/assets/build/configure/components/board/board-gen-config.png b/assets/components/board/board-gen-config.png similarity index 100% rename from assets/build/configure/components/board/board-gen-config.png rename to assets/components/board/board-gen-config.png diff --git a/assets/build/configure/components/board/customlinux-ui-config.png b/assets/components/board/customlinux-ui-config.png similarity index 100% rename from assets/build/configure/components/board/customlinux-ui-config.png rename to assets/components/board/customlinux-ui-config.png diff --git a/assets/build/configure/components/board/fake-ui-config.png b/assets/components/board/fake-ui-config.png similarity index 100% rename from assets/build/configure/components/board/fake-ui-config.png rename to assets/components/board/fake-ui-config.png diff --git a/assets/build/configure/components/board/jetson-ui-config.png b/assets/components/board/jetson-ui-config.png similarity index 100% rename from assets/build/configure/components/board/jetson-ui-config.png rename to assets/components/board/jetson-ui-config.png diff --git a/assets/build/configure/components/board/numato-ui-config.png b/assets/components/board/numato-ui-config.png similarity index 100% rename from assets/build/configure/components/board/numato-ui-config.png rename to assets/components/board/numato-ui-config.png diff --git a/assets/build/configure/components/board/pca9685-ui-config.png b/assets/components/board/pca9685-ui-config.png similarity index 100% rename from assets/build/configure/components/board/pca9685-ui-config.png rename to assets/components/board/pca9685-ui-config.png diff --git a/assets/build/configure/components/board/pi-ui-config.png b/assets/components/board/pi-ui-config.png similarity index 100% rename from assets/build/configure/components/board/pi-ui-config.png rename to assets/components/board/pi-ui-config.png diff --git a/assets/build/configure/components/board/ti-ui-config.png b/assets/components/board/ti-ui-config.png similarity index 100% rename from assets/build/configure/components/board/ti-ui-config.png rename to assets/components/board/ti-ui-config.png diff --git a/assets/build/configure/components/board/upboard-ui-config.png b/assets/components/board/upboard-ui-config.png similarity index 100% rename from assets/build/configure/components/board/upboard-ui-config.png rename to assets/components/board/upboard-ui-config.png diff --git a/assets/build/configure/components/camera/calibrate/example-images.png b/assets/components/camera/calibrate/example-images.png similarity index 100% rename from assets/build/configure/components/camera/calibrate/example-images.png rename to assets/components/camera/calibrate/example-images.png diff --git a/assets/build/configure/components/camera/camera_tutorial_copy_paste.png b/assets/components/camera/camera_tutorial_copy_paste.png similarity index 100% rename from assets/build/configure/components/camera/camera_tutorial_copy_paste.png rename to assets/components/camera/camera_tutorial_copy_paste.png diff --git a/assets/build/configure/components/camera/configure-align-color-depth-extrinsics.png b/assets/components/camera/configure-align-color-depth-extrinsics.png similarity index 100% rename from assets/build/configure/components/camera/configure-align-color-depth-extrinsics.png rename to assets/components/camera/configure-align-color-depth-extrinsics.png diff --git a/assets/build/configure/components/camera/configure-align-color-depth-homography.png b/assets/components/camera/configure-align-color-depth-homography.png similarity index 100% rename from assets/build/configure/components/camera/configure-align-color-depth-homography.png rename to assets/components/camera/configure-align-color-depth-homography.png diff --git a/assets/build/configure/components/camera/configure-dual-stream.png b/assets/components/camera/configure-dual-stream.png similarity index 100% rename from assets/build/configure/components/camera/configure-dual-stream.png rename to assets/components/camera/configure-dual-stream.png diff --git a/assets/build/configure/components/camera/configure-fake.png b/assets/components/camera/configure-fake.png similarity index 100% rename from assets/build/configure/components/camera/configure-fake.png rename to assets/components/camera/configure-fake.png diff --git a/assets/build/configure/components/camera/configure-ffmpeg.png b/assets/components/camera/configure-ffmpeg.png similarity index 100% rename from assets/build/configure/components/camera/configure-ffmpeg.png rename to assets/components/camera/configure-ffmpeg.png diff --git a/assets/build/configure/components/camera/configure-image-file.png b/assets/components/camera/configure-image-file.png similarity index 100% rename from assets/build/configure/components/camera/configure-image-file.png rename to assets/components/camera/configure-image-file.png diff --git a/assets/build/configure/components/camera/configure-join-color-depth.png b/assets/components/camera/configure-join-color-depth.png similarity index 100% rename from assets/build/configure/components/camera/configure-join-color-depth.png rename to assets/components/camera/configure-join-color-depth.png diff --git a/assets/build/configure/components/camera/configure-join-pointclouds.png b/assets/components/camera/configure-join-pointclouds.png similarity index 100% rename from assets/build/configure/components/camera/configure-join-pointclouds.png rename to assets/components/camera/configure-join-pointclouds.png diff --git a/assets/build/configure/components/camera/configure-rtsp.png b/assets/components/camera/configure-rtsp.png similarity index 100% rename from assets/build/configure/components/camera/configure-rtsp.png rename to assets/components/camera/configure-rtsp.png diff --git a/assets/build/configure/components/camera/configure-single-stream.png b/assets/components/camera/configure-single-stream.png similarity index 100% rename from assets/build/configure/components/camera/configure-single-stream.png rename to assets/components/camera/configure-single-stream.png diff --git a/assets/build/configure/components/camera/configure-transform.png b/assets/components/camera/configure-transform.png similarity index 100% rename from assets/build/configure/components/camera/configure-transform.png rename to assets/components/camera/configure-transform.png diff --git a/assets/build/configure/components/camera/configure-ultrasonic.png b/assets/components/camera/configure-ultrasonic.png similarity index 100% rename from assets/build/configure/components/camera/configure-ultrasonic.png rename to assets/components/camera/configure-ultrasonic.png diff --git a/assets/build/configure/components/camera/configure-velodyne.png b/assets/components/camera/configure-velodyne.png similarity index 100% rename from assets/build/configure/components/camera/configure-velodyne.png rename to assets/components/camera/configure-velodyne.png diff --git a/assets/build/configure/components/camera/configure-webcam.png b/assets/components/camera/configure-webcam.png similarity index 100% rename from assets/build/configure/components/camera/configure-webcam.png rename to assets/components/camera/configure-webcam.png diff --git a/assets/build/configure/components/camera/example_camera_image.png b/assets/components/camera/example_camera_image.png similarity index 100% rename from assets/build/configure/components/camera/example_camera_image.png rename to assets/components/camera/example_camera_image.png diff --git a/assets/build/configure/components/camera/fake-view.png b/assets/components/camera/fake-view.png similarity index 100% rename from assets/build/configure/components/camera/fake-view.png rename to assets/components/camera/fake-view.png diff --git a/assets/build/configure/components/component/model1-builder.png b/assets/components/component/model1-builder.png similarity index 100% rename from assets/build/configure/components/component/model1-builder.png rename to assets/components/component/model1-builder.png diff --git a/assets/build/configure/components/encoder/configure-am5.png b/assets/components/encoder/configure-am5.png similarity index 100% rename from assets/build/configure/components/encoder/configure-am5.png rename to assets/components/encoder/configure-am5.png diff --git a/assets/build/configure/components/encoder/configure-arduino.png b/assets/components/encoder/configure-arduino.png similarity index 100% rename from assets/build/configure/components/encoder/configure-arduino.png rename to assets/components/encoder/configure-arduino.png diff --git a/assets/build/configure/components/encoder/configure-fake.png b/assets/components/encoder/configure-fake.png similarity index 100% rename from assets/build/configure/components/encoder/configure-fake.png rename to assets/components/encoder/configure-fake.png diff --git a/assets/build/configure/components/encoder/configure-incremental.png b/assets/components/encoder/configure-incremental.png similarity index 100% rename from assets/build/configure/components/encoder/configure-incremental.png rename to assets/components/encoder/configure-incremental.png diff --git a/assets/build/configure/components/encoder/configure-single.png b/assets/components/encoder/configure-single.png similarity index 100% rename from assets/build/configure/components/encoder/configure-single.png rename to assets/components/encoder/configure-single.png diff --git a/assets/build/configure/components/encoder/control.png b/assets/components/encoder/control.png similarity index 100% rename from assets/build/configure/components/encoder/control.png rename to assets/components/encoder/control.png diff --git a/assets/build/configure/components/encoder/create-am5.png b/assets/components/encoder/create-am5.png similarity index 100% rename from assets/build/configure/components/encoder/create-am5.png rename to assets/components/encoder/create-am5.png diff --git a/assets/build/configure/components/encoder/create-arduino.png b/assets/components/encoder/create-arduino.png similarity index 100% rename from assets/build/configure/components/encoder/create-arduino.png rename to assets/components/encoder/create-arduino.png diff --git a/assets/build/configure/components/encoder/create-fake.png b/assets/components/encoder/create-fake.png similarity index 100% rename from assets/build/configure/components/encoder/create-fake.png rename to assets/components/encoder/create-fake.png diff --git a/assets/build/configure/components/encoder/create-incremental.png b/assets/components/encoder/create-incremental.png similarity index 100% rename from assets/build/configure/components/encoder/create-incremental.png rename to assets/components/encoder/create-incremental.png diff --git a/assets/build/configure/components/encoder/create-single.png b/assets/components/encoder/create-single.png similarity index 100% rename from assets/build/configure/components/encoder/create-single.png rename to assets/components/encoder/create-single.png diff --git a/assets/build/configure/components/gantry/fake-gantry-ui-config.png b/assets/components/gantry/fake-gantry-ui-config.png similarity index 100% rename from assets/build/configure/components/gantry/fake-gantry-ui-config.png rename to assets/components/gantry/fake-gantry-ui-config.png diff --git a/assets/build/configure/components/gantry/gantry-control-tab.png b/assets/components/gantry/gantry-control-tab.png similarity index 100% rename from assets/build/configure/components/gantry/gantry-control-tab.png rename to assets/components/gantry/gantry-control-tab.png diff --git a/assets/build/configure/components/gantry/gantry-illustration.png b/assets/components/gantry/gantry-illustration.png similarity index 100% rename from assets/build/configure/components/gantry/gantry-illustration.png rename to assets/components/gantry/gantry-illustration.png diff --git a/assets/build/configure/components/gantry/multi-axis-ui-config.png b/assets/components/gantry/multi-axis-ui-config.png similarity index 100% rename from assets/build/configure/components/gantry/multi-axis-ui-config.png rename to assets/components/gantry/multi-axis-ui-config.png diff --git a/assets/build/configure/components/gantry/single-axis-ui-config.png b/assets/components/gantry/single-axis-ui-config.png similarity index 100% rename from assets/build/configure/components/gantry/single-axis-ui-config.png rename to assets/components/gantry/single-axis-ui-config.png diff --git a/assets/build/configure/components/generic/fake-generic-ui-config.png b/assets/components/generic/fake-generic-ui-config.png similarity index 100% rename from assets/build/configure/components/generic/fake-generic-ui-config.png rename to assets/components/generic/fake-generic-ui-config.png diff --git a/assets/build/configure/components/generic/generic-control.png b/assets/components/generic/generic-control.png similarity index 100% rename from assets/build/configure/components/generic/generic-control.png rename to assets/components/generic/generic-control.png diff --git a/assets/build/configure/components/gripper/fake-gripper-ui-config.png b/assets/components/gripper/fake-gripper-ui-config.png similarity index 100% rename from assets/build/configure/components/gripper/fake-gripper-ui-config.png rename to assets/components/gripper/fake-gripper-ui-config.png diff --git a/assets/build/configure/components/gripper/gripper-control-tab.png b/assets/components/gripper/gripper-control-tab.png similarity index 100% rename from assets/build/configure/components/gripper/gripper-control-tab.png rename to assets/components/gripper/gripper-control-tab.png diff --git a/assets/build/configure/components/gripper/softrobotics-ui-config.png b/assets/components/gripper/softrobotics-ui-config.png similarity index 100% rename from assets/build/configure/components/gripper/softrobotics-ui-config.png rename to assets/components/gripper/softrobotics-ui-config.png diff --git a/assets/build/configure/components/input-controller/fake-input-controller-ui-config.png b/assets/components/input-controller/fake-input-controller-ui-config.png similarity index 100% rename from assets/build/configure/components/input-controller/fake-input-controller-ui-config.png rename to assets/components/input-controller/fake-input-controller-ui-config.png diff --git a/assets/build/configure/components/input-controller/gamepad-input-controller-ui-config.png b/assets/components/input-controller/gamepad-input-controller-ui-config.png similarity index 100% rename from assets/build/configure/components/input-controller/gamepad-input-controller-ui-config.png rename to assets/components/input-controller/gamepad-input-controller-ui-config.png diff --git a/assets/build/configure/components/input-controller/gpio-input-controller-ui-config.png b/assets/components/input-controller/gpio-input-controller-ui-config.png similarity index 100% rename from assets/build/configure/components/input-controller/gpio-input-controller-ui-config.png rename to assets/components/input-controller/gpio-input-controller-ui-config.png diff --git a/assets/build/configure/components/input-controller/input-controller-control-tab.png b/assets/components/input-controller/input-controller-control-tab.png similarity index 100% rename from assets/build/configure/components/input-controller/input-controller-control-tab.png rename to assets/components/input-controller/input-controller-control-tab.png diff --git a/assets/build/configure/components/input-controller/mux-input-controller-ui-config.png b/assets/components/input-controller/mux-input-controller-ui-config.png similarity index 100% rename from assets/build/configure/components/input-controller/mux-input-controller-ui-config.png rename to assets/components/input-controller/mux-input-controller-ui-config.png diff --git a/assets/build/configure/components/input-controller/webgamepad-input-controller-ui-config.png b/assets/components/input-controller/webgamepad-input-controller-ui-config.png similarity index 100% rename from assets/build/configure/components/input-controller/webgamepad-input-controller-ui-config.png rename to assets/components/input-controller/webgamepad-input-controller-ui-config.png diff --git a/assets/build/configure/components/motor/28byj48-config-ui.png b/assets/components/motor/28byj48-config-ui.png similarity index 100% rename from assets/build/configure/components/motor/28byj48-config-ui.png rename to assets/components/motor/28byj48-config-ui.png diff --git a/assets/build/configure/components/motor/28byj48-wiring.png b/assets/components/motor/28byj48-wiring.png similarity index 100% rename from assets/build/configure/components/motor/28byj48-wiring.png rename to assets/components/motor/28byj48-wiring.png diff --git a/assets/build/configure/components/motor/control.png b/assets/components/motor/control.png similarity index 100% rename from assets/build/configure/components/motor/control.png rename to assets/components/motor/control.png diff --git a/assets/build/configure/components/motor/dmc4000-config-ui.png b/assets/components/motor/dmc4000-config-ui.png similarity index 100% rename from assets/build/configure/components/motor/dmc4000-config-ui.png rename to assets/components/motor/dmc4000-config-ui.png diff --git a/assets/build/configure/components/motor/encoded-config-ui.png b/assets/components/motor/encoded-config-ui.png similarity index 100% rename from assets/build/configure/components/motor/encoded-config-ui.png rename to assets/components/motor/encoded-config-ui.png diff --git a/assets/build/configure/components/motor/fake-config-ui.png b/assets/components/motor/fake-config-ui.png similarity index 100% rename from assets/build/configure/components/motor/fake-config-ui.png rename to assets/components/motor/fake-config-ui.png diff --git a/assets/build/configure/components/motor/gpio-config-ui.png b/assets/components/motor/gpio-config-ui.png similarity index 100% rename from assets/build/configure/components/motor/gpio-config-ui.png rename to assets/components/motor/gpio-config-ui.png diff --git a/assets/build/configure/components/motor/gpiostepper-config-ui.png b/assets/components/motor/gpiostepper-config-ui.png similarity index 100% rename from assets/build/configure/components/motor/gpiostepper-config-ui.png rename to assets/components/motor/gpiostepper-config-ui.png diff --git a/assets/build/configure/components/motor/motor-brushed-dc-wiring.png b/assets/components/motor/motor-brushed-dc-wiring.png similarity index 100% rename from assets/build/configure/components/motor/motor-brushed-dc-wiring.png rename to assets/components/motor/motor-brushed-dc-wiring.png diff --git a/assets/build/configure/components/motor/motor-brushless-dc-wiring.png b/assets/components/motor/motor-brushless-dc-wiring.png similarity index 100% rename from assets/build/configure/components/motor/motor-brushless-dc-wiring.png rename to assets/components/motor/motor-brushless-dc-wiring.png diff --git a/assets/build/configure/components/motor/motor-encoded-dc-json.png b/assets/components/motor/motor-encoded-dc-json.png similarity index 100% rename from assets/build/configure/components/motor/motor-encoded-dc-json.png rename to assets/components/motor/motor-encoded-dc-json.png diff --git a/assets/build/configure/components/motor/motor-encoded-dc-wiring.png b/assets/components/motor/motor-encoded-dc-wiring.png similarity index 100% rename from assets/build/configure/components/motor/motor-encoded-dc-wiring.png rename to assets/components/motor/motor-encoded-dc-wiring.png diff --git a/assets/build/configure/components/motor/motor-gpio-json.png b/assets/components/motor/motor-gpio-json.png similarity index 100% rename from assets/build/configure/components/motor/motor-gpio-json.png rename to assets/components/motor/motor-gpio-json.png diff --git a/assets/build/configure/components/motor/motor-gpiostepper-json.png b/assets/components/motor/motor-gpiostepper-json.png similarity index 100% rename from assets/build/configure/components/motor/motor-gpiostepper-json.png rename to assets/components/motor/motor-gpiostepper-json.png diff --git a/assets/build/configure/components/motor/motor-gpiostepper-wiring.png b/assets/components/motor/motor-gpiostepper-wiring.png similarity index 100% rename from assets/build/configure/components/motor/motor-gpiostepper-wiring.png rename to assets/components/motor/motor-gpiostepper-wiring.png diff --git a/assets/build/configure/components/motor/roboclaw-ui-config.png b/assets/components/motor/roboclaw-ui-config.png similarity index 100% rename from assets/build/configure/components/motor/roboclaw-ui-config.png rename to assets/components/motor/roboclaw-ui-config.png diff --git a/assets/build/configure/components/motor/tmc5072-config-ui.png b/assets/components/motor/tmc5072-config-ui.png similarity index 100% rename from assets/build/configure/components/motor/tmc5072-config-ui.png rename to assets/components/motor/tmc5072-config-ui.png diff --git a/assets/build/configure/components/movement-sensor/adxl345-builder.png b/assets/components/movement-sensor/adxl345-builder.png similarity index 100% rename from assets/build/configure/components/movement-sensor/adxl345-builder.png rename to assets/components/movement-sensor/adxl345-builder.png diff --git a/assets/build/configure/components/movement-sensor/fake-builder.png b/assets/components/movement-sensor/fake-builder.png similarity index 100% rename from assets/build/configure/components/movement-sensor/fake-builder.png rename to assets/components/movement-sensor/fake-builder.png diff --git a/assets/build/configure/components/movement-sensor/gps-nmea-builder.png b/assets/components/movement-sensor/gps-nmea-builder.png similarity index 100% rename from assets/build/configure/components/movement-sensor/gps-nmea-builder.png rename to assets/components/movement-sensor/gps-nmea-builder.png diff --git a/assets/build/configure/components/movement-sensor/gps-nmea-rtk-pmtk-builder.png b/assets/components/movement-sensor/gps-nmea-rtk-pmtk-builder.png similarity index 100% rename from assets/build/configure/components/movement-sensor/gps-nmea-rtk-pmtk-builder.png rename to assets/components/movement-sensor/gps-nmea-rtk-pmtk-builder.png diff --git a/assets/build/configure/components/movement-sensor/gps-nmea-rtk-serial-builder.png b/assets/components/movement-sensor/gps-nmea-rtk-serial-builder.png similarity index 100% rename from assets/build/configure/components/movement-sensor/gps-nmea-rtk-serial-builder.png rename to assets/components/movement-sensor/gps-nmea-rtk-serial-builder.png diff --git a/assets/build/configure/components/movement-sensor/imu-vectornav-builder.png b/assets/components/movement-sensor/imu-vectornav-builder.png similarity index 100% rename from assets/build/configure/components/movement-sensor/imu-vectornav-builder.png rename to assets/components/movement-sensor/imu-vectornav-builder.png diff --git a/assets/build/configure/components/movement-sensor/imu-wit-builder.png b/assets/components/movement-sensor/imu-wit-builder.png similarity index 100% rename from assets/build/configure/components/movement-sensor/imu-wit-builder.png rename to assets/components/movement-sensor/imu-wit-builder.png diff --git a/assets/build/configure/components/movement-sensor/merged-config-builder.png b/assets/components/movement-sensor/merged-config-builder.png similarity index 100% rename from assets/build/configure/components/movement-sensor/merged-config-builder.png rename to assets/components/movement-sensor/merged-config-builder.png diff --git a/assets/build/configure/components/movement-sensor/movement-sensor-control-tab-adxl345.png b/assets/components/movement-sensor/movement-sensor-control-tab-adxl345.png similarity index 100% rename from assets/build/configure/components/movement-sensor/movement-sensor-control-tab-adxl345.png rename to assets/components/movement-sensor/movement-sensor-control-tab-adxl345.png diff --git a/assets/build/configure/components/movement-sensor/movement-sensor-control-tab-fake.png b/assets/components/movement-sensor/movement-sensor-control-tab-fake.png similarity index 100% rename from assets/build/configure/components/movement-sensor/movement-sensor-control-tab-fake.png rename to assets/components/movement-sensor/movement-sensor-control-tab-fake.png diff --git a/assets/build/configure/components/movement-sensor/movement-sensor-control-tab-gps.png b/assets/components/movement-sensor/movement-sensor-control-tab-gps.png similarity index 100% rename from assets/build/configure/components/movement-sensor/movement-sensor-control-tab-gps.png rename to assets/components/movement-sensor/movement-sensor-control-tab-gps.png diff --git a/assets/build/configure/components/movement-sensor/movement-sensor-control-tab-imu.png b/assets/components/movement-sensor/movement-sensor-control-tab-imu.png similarity index 100% rename from assets/build/configure/components/movement-sensor/movement-sensor-control-tab-imu.png rename to assets/components/movement-sensor/movement-sensor-control-tab-imu.png diff --git a/assets/build/configure/components/movement-sensor/movement-sensor-control-tab-mpu6050.png b/assets/components/movement-sensor/movement-sensor-control-tab-mpu6050.png similarity index 100% rename from assets/build/configure/components/movement-sensor/movement-sensor-control-tab-mpu6050.png rename to assets/components/movement-sensor/movement-sensor-control-tab-mpu6050.png diff --git a/assets/build/configure/components/movement-sensor/movement-sensor-control-tab.png b/assets/components/movement-sensor/movement-sensor-control-tab.png similarity index 100% rename from assets/build/configure/components/movement-sensor/movement-sensor-control-tab.png rename to assets/components/movement-sensor/movement-sensor-control-tab.png diff --git a/assets/build/configure/components/movement-sensor/mpu6050-builder.png b/assets/components/movement-sensor/mpu6050-builder.png similarity index 100% rename from assets/build/configure/components/movement-sensor/mpu6050-builder.png rename to assets/components/movement-sensor/mpu6050-builder.png diff --git a/assets/build/configure/components/movement-sensor/visual-odometry-poster.jpg b/assets/components/movement-sensor/visual-odometry-poster.jpg similarity index 100% rename from assets/build/configure/components/movement-sensor/visual-odometry-poster.jpg rename to assets/components/movement-sensor/visual-odometry-poster.jpg diff --git a/assets/build/configure/components/movement-sensor/wheeled-odometry-builder.png b/assets/components/movement-sensor/wheeled-odometry-builder.png similarity index 100% rename from assets/build/configure/components/movement-sensor/wheeled-odometry-builder.png rename to assets/components/movement-sensor/wheeled-odometry-builder.png diff --git a/assets/build/configure/components/power-sensor/fake-config-builder.png b/assets/components/power-sensor/fake-config-builder.png similarity index 100% rename from assets/build/configure/components/power-sensor/fake-config-builder.png rename to assets/components/power-sensor/fake-config-builder.png diff --git a/assets/build/configure/components/power-sensor/ina219-config-builder.png b/assets/components/power-sensor/ina219-config-builder.png similarity index 100% rename from assets/build/configure/components/power-sensor/ina219-config-builder.png rename to assets/components/power-sensor/ina219-config-builder.png diff --git a/assets/build/configure/components/power-sensor/ina226-config-builder.png b/assets/components/power-sensor/ina226-config-builder.png similarity index 100% rename from assets/build/configure/components/power-sensor/ina226-config-builder.png rename to assets/components/power-sensor/ina226-config-builder.png diff --git a/assets/build/configure/components/power-sensor/power-sensor-control.png b/assets/components/power-sensor/power-sensor-control.png similarity index 100% rename from assets/build/configure/components/power-sensor/power-sensor-control.png rename to assets/components/power-sensor/power-sensor-control.png diff --git a/assets/build/configure/components/power-sensor/renogy-config-builder.png b/assets/components/power-sensor/renogy-config-builder.png similarity index 100% rename from assets/build/configure/components/power-sensor/renogy-config-builder.png rename to assets/components/power-sensor/renogy-config-builder.png diff --git a/assets/build/configure/components/sensor/bme280-sensor-ui-config.png b/assets/components/sensor/bme280-sensor-ui-config.png similarity index 100% rename from assets/build/configure/components/sensor/bme280-sensor-ui-config.png rename to assets/components/sensor/bme280-sensor-ui-config.png diff --git a/assets/build/configure/components/sensor/ds18b20-sensor-ui-config.png b/assets/components/sensor/ds18b20-sensor-ui-config.png similarity index 100% rename from assets/build/configure/components/sensor/ds18b20-sensor-ui-config.png rename to assets/components/sensor/ds18b20-sensor-ui-config.png diff --git a/assets/build/configure/components/sensor/fake-sensor-ui-config.png b/assets/components/sensor/fake-sensor-ui-config.png similarity index 100% rename from assets/build/configure/components/sensor/fake-sensor-ui-config.png rename to assets/components/sensor/fake-sensor-ui-config.png diff --git a/assets/build/configure/components/sensor/sensirion-sht3xd-sensor-ui-config.png b/assets/components/sensor/sensirion-sht3xd-sensor-ui-config.png similarity index 100% rename from assets/build/configure/components/sensor/sensirion-sht3xd-sensor-ui-config.png rename to assets/components/sensor/sensirion-sht3xd-sensor-ui-config.png diff --git a/assets/build/configure/components/sensor/sensor-control-tab.png b/assets/components/sensor/sensor-control-tab.png similarity index 100% rename from assets/build/configure/components/sensor/sensor-control-tab.png rename to assets/components/sensor/sensor-control-tab.png diff --git a/assets/build/configure/components/sensor/ultrasonic-sensor-ui-config.png b/assets/components/sensor/ultrasonic-sensor-ui-config.png similarity index 100% rename from assets/build/configure/components/sensor/ultrasonic-sensor-ui-config.png rename to assets/components/sensor/ultrasonic-sensor-ui-config.png diff --git a/assets/build/configure/components/servo/fake-servo-ui-config.png b/assets/components/servo/fake-servo-ui-config.png similarity index 100% rename from assets/build/configure/components/servo/fake-servo-ui-config.png rename to assets/components/servo/fake-servo-ui-config.png diff --git a/assets/build/configure/components/servo/gpio-servo-ui-config.png b/assets/components/servo/gpio-servo-ui-config.png similarity index 100% rename from assets/build/configure/components/servo/gpio-servo-ui-config.png rename to assets/components/servo/gpio-servo-ui-config.png diff --git a/assets/build/configure/components/servo/pi-servo-ui-config.png b/assets/components/servo/pi-servo-ui-config.png similarity index 100% rename from assets/build/configure/components/servo/pi-servo-ui-config.png rename to assets/components/servo/pi-servo-ui-config.png diff --git a/assets/build/configure/components/servo/servo-control-tab.png b/assets/components/servo/servo-control-tab.png similarity index 100% rename from assets/build/configure/components/servo/servo-control-tab.png rename to assets/components/servo/servo-control-tab.png diff --git a/assets/build/configure/components/servo/servo-json.png b/assets/components/servo/servo-json.png similarity index 100% rename from assets/build/configure/components/servo/servo-json.png rename to assets/components/servo/servo-json.png diff --git a/assets/build/configure/components/servo/servo-wiring.png b/assets/components/servo/servo-wiring.png similarity index 100% rename from assets/build/configure/components/servo/servo-wiring.png rename to assets/components/servo/servo-wiring.png diff --git a/assets/build/configure/services/added-model.png b/assets/services/added-model.png similarity index 100% rename from assets/build/configure/services/added-model.png rename to assets/services/added-model.png diff --git a/assets/build/configure/services/available-models.png b/assets/services/available-models.png similarity index 100% rename from assets/build/configure/services/available-models.png rename to assets/services/available-models.png diff --git a/assets/build/configure/services/deploy-model.png b/assets/services/deploy-model.png similarity index 100% rename from assets/build/configure/services/deploy-model.png rename to assets/services/deploy-model.png diff --git a/assets/build/configure/services/icons/base-rc.svg b/assets/services/icons/base-rc.svg similarity index 100% rename from assets/build/configure/services/icons/base-rc.svg rename to assets/services/icons/base-rc.svg diff --git a/assets/build/configure/services/icons/data-capture.svg b/assets/services/icons/data-capture.svg similarity index 100% rename from assets/build/configure/services/icons/data-capture.svg rename to assets/services/icons/data-capture.svg diff --git a/assets/build/configure/services/icons/fleet.svg b/assets/services/icons/fleet.svg similarity index 100% rename from assets/build/configure/services/icons/fleet.svg rename to assets/services/icons/fleet.svg diff --git a/assets/build/configure/services/icons/frame-system.svg b/assets/services/icons/frame-system.svg similarity index 100% rename from assets/build/configure/services/icons/frame-system.svg rename to assets/services/icons/frame-system.svg diff --git a/assets/build/configure/services/icons/ml.svg b/assets/services/icons/ml.svg similarity index 100% rename from assets/build/configure/services/icons/ml.svg rename to assets/services/icons/ml.svg diff --git a/assets/build/configure/services/icons/motion.svg b/assets/services/icons/motion.svg similarity index 100% rename from assets/build/configure/services/icons/motion.svg rename to assets/services/icons/motion.svg diff --git a/assets/build/configure/services/icons/navigation.svg b/assets/services/icons/navigation.svg similarity index 100% rename from assets/build/configure/services/icons/navigation.svg rename to assets/services/icons/navigation.svg diff --git a/assets/build/configure/services/icons/sdk.svg b/assets/services/icons/sdk.svg similarity index 100% rename from assets/build/configure/services/icons/sdk.svg rename to assets/services/icons/sdk.svg diff --git a/assets/build/configure/services/icons/sensor.svg b/assets/services/icons/sensor.svg similarity index 100% rename from assets/build/configure/services/icons/sensor.svg rename to assets/services/icons/sensor.svg diff --git a/assets/build/configure/services/icons/slam.svg b/assets/services/icons/slam.svg similarity index 100% rename from assets/build/configure/services/icons/slam.svg rename to assets/services/icons/slam.svg diff --git a/assets/build/configure/services/icons/vision.svg b/assets/services/icons/vision.svg similarity index 100% rename from assets/build/configure/services/icons/vision.svg rename to assets/services/icons/vision.svg diff --git a/assets/build/configure/services/model-on-camera.png b/assets/services/model-on-camera.png similarity index 100% rename from assets/build/configure/services/model-on-camera.png rename to assets/services/model-on-camera.png diff --git a/docs/_index.md b/docs/_index.md index fa7cb59b0e..f308fcfd4f 100644 --- a/docs/_index.md +++ b/docs/_index.md @@ -33,7 +33,7 @@ sitemap:
  • - + {{}}

    Intel UP4000

    @@ -69,7 +69,7 @@ sitemap:
  • - + {{}}

    NVIDIA Jetson Xavier NX

    @@ -93,13 +93,13 @@ sitemap:
  • - + {{}}

    Numato GPIO Modules

  • - + {{}}

    PCA9686 I2C Interface

    @@ -150,7 +150,7 @@ sitemap:
    1. Configure a machine or a fleet
    2. Install Viam on your machine
    3. -
    4. Configure components and add services
    5. +
    6. Configure components and add services
    7. Control and test your machine
    @@ -185,11 +185,11 @@ sitemap:
    Components
    - {{}} + {{}}
    -
    Services
    +
    Services
    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.

    diff --git a/docs/get-started/try-viam/rover-resources/rover-tutorial-fragments.md b/docs/get-started/try-viam/rover-resources/rover-tutorial-fragments.md index 5fd047c7d2..cdefc801d0 100644 --- a/docs/get-started/try-viam/rover-resources/rover-tutorial-fragments.md +++ b/docs/get-started/try-viam/rover-resources/rover-tutorial-fragments.md @@ -37,17 +37,17 @@ Click **Save Config** to save the new configuration. The fragment adds the following components to your robot's JSON configuration: -- A [board component](/build/configure/components/board/pi/) named `local` representing the Raspberry Pi +- A [board component](/components/board/pi/) named `local` representing the Raspberry Pi - An I2C bus for connection to the accelerometer. -- Two [motors](/build/configure/components/motor/gpio/) (`right` and `left`) +- Two [motors](/components/motor/gpio/) (`right` and `left`) - The configured pin numbers correspond to where the motor drivers are connected to the board. -- Two [encoders](/build/configure/components/encoder/single/), one for each motor -- A wheeled [base](/build/configure/components/base/), an abstraction that coordinates the movement of the right and left motors +- Two [encoders](/components/encoder/single/), one for each motor +- A wheeled [base](/components/base/), an abstraction that coordinates the movement of the right and left motors - Width between the wheel centers: 260 mm - Wheel circumference: 217 mm - Spin slip factor: 1 -- A webcam [camera](/build/configure/components/camera/webcam/) -- An [accelerometer](/build/configure/components/movement-sensor/adxl345/) +- A webcam [camera](/components/camera/webcam/) +- An [accelerometer](/components/movement-sensor/adxl345/) {{% alert title="Info" color="info" %}} diff --git a/docs/get-started/try-viam/rover-resources/rover-tutorial.md b/docs/get-started/try-viam/rover-resources/rover-tutorial.md index cee26966a8..f170e3fa4f 100644 --- a/docs/get-started/try-viam/rover-resources/rover-tutorial.md +++ b/docs/get-started/try-viam/rover-resources/rover-tutorial.md @@ -63,8 +63,8 @@ All together, your kit looks like this: {{}} The motors come with integrated encoders. -For information on encoders, see [Encoder Component](/build/configure/components/encoder/). -For more information on encoded DC motors, see [Encoded Motors](/build/configure/components/motor/gpio/encoded-motor/). +For information on encoders, see [Encoder Component](/components/encoder/). +For more information on encoded DC motors, see [Encoded Motors](/components/motor/gpio/encoded-motor/). The kit also includes stiffer suspension springs that you can substitute for the ones on the rover. Generally, a stiff suspension helps with precise steering control. @@ -82,16 +82,16 @@ L298 is a high voltage and high current motor drive chip, and H-Bridge is typica {{}} The webcam that comes with the kit is a standard USB camera device and the rover has a custom camera mount for it. -For more information, see [Camera Component](/build/configure/components/camera/). +For more information, see [Camera Component](/components/camera/). ### 3D accelerometer {{}} -The [ADXL345](/build/configure/components/movement-sensor/adxl345/) sensor manufactured by Analog Devices is a digital 3-axis accelerometer that can read acceleration up to ±16g for high-resolution (13-bit) measurements. +The [ADXL345](/components/movement-sensor/adxl345/) sensor manufactured by Analog Devices is a digital 3-axis accelerometer that can read acceleration up to ±16g for high-resolution (13-bit) measurements. You can access it with a SPI (3-wire or 4-wire) or I2C digital interface. -In Viam, you can configure it as a [movement sensor component](/build/configure/components/movement-sensor/). +In Viam, you can configure it as a [movement sensor component](/components/movement-sensor/). ### Buck converter @@ -261,7 +261,7 @@ The following are just a few ideas, but you can expand or modify the rover kit w - For GPS navigation, we support NMEA (using serial and I2C) and RTK. Make and model don't make a difference as long as you use these protocols. - See [Movement Sensor Component](/build/configure/components/movement-sensor/) for more information. + See [Movement Sensor Component](/components/movement-sensor/) for more information. - For [LiDAR laser range scanning](/mobility/slam/cartographer/), we recommend Velodyne, or RPlidar (including A1, which is a sub-$100 LIDAR). - For robot arms, we tried the [Yahboom DOFBOT robotics arm](https://category.yahboom.net/products/dofbot-jetson_nano) with success. diff --git a/docs/get-started/try-viam/try-viam-tutorial.md b/docs/get-started/try-viam/try-viam-tutorial.md index 55c0052673..d837763b65 100644 --- a/docs/get-started/try-viam/try-viam-tutorial.md +++ b/docs/get-started/try-viam/try-viam-tutorial.md @@ -45,7 +45,7 @@ The order of these components may vary. ### Base control -The [base component](/build/configure/components/base/) is the platform that the other parts of a mobile robot attach to. +The [base component](/components/base/) is the platform that the other parts of a mobile robot attach to. Click the `viam_base` component to expand the base control pane to reveal the camera feed and driving interfaces. @@ -92,7 +92,7 @@ If you go from the from **Keyboard** to the **Discrete** tab, you can choose bet ### Camera control -While you can view the camera streams [from the base component panel](#camera-views), you can access more features on each individual [camera component](/build/configure/components/camera/) panel. In these panels, you can: +While you can view the camera streams [from the base component panel](#camera-views), you can access more features on each individual [camera component](/components/camera/) panel. In these panels, you can: - Set the refresh frequency - Export screenshots @@ -108,7 +108,7 @@ While you can view the camera streams [from the base component panel](#camera-vi ### Motor control -The [motor components](/build/configure/components/motor/) enable you to move the base. +The [motor components](/components/motor/) enable you to move the base. The motors are named `left` and `right`, corresponding to their location on the rover base. Their initial state is **Idle**. You can click on each motor panel and make the motor **RUN** or **STOP**. @@ -124,7 +124,7 @@ You can also see their current positions (based on encoder readings) in real tim #### Board control -The [board component](/build/configure/components/board/) is the signal wire hub of a robot which allows you to control the states of individual GPIO pins on the board. +The [board component](/components/board/) is the signal wire hub of a robot which allows you to control the states of individual GPIO pins on the board. For the Viam Rover, the board component is named `local` and controls a Raspberry Pi on the Viam Rover. With it, you can control the states of individual GPIO pins on the board. @@ -133,7 +133,7 @@ With it, you can control the states of individual GPIO pins on the board. #### Web gamepad control -The [web gamepad component](/build/configure/components/input-controller/webgamepad/) is disabled by default, but if you have a compatible gamepad, you can enable the **Enabled** toggle. +The [web gamepad component](/components/input-controller/webgamepad/) is disabled by default, but if you have a compatible gamepad, you can enable the **Enabled** toggle. ## Learn about robot configuration @@ -144,13 +144,13 @@ There you can view the configuration for each component in the robot: attributes ### Board configuration -The [board component](/build/configure/components/board/) component is the signal wire hub of a robot. +The [board component](/components/board/) component is the signal wire hub of a robot. Configuring a board component allows you to control the states of individual GPIO pins to command the electrical signals sent through and received by the board. For the Viam Rover, the board component is a Raspberry Pi with **Name** `local`, **Type** `board`, and **Model** `pi`. ### Encoder configuration -An [encoder](/build/configure/components/encoder/) is a device that is used to sense angular position, direction and/or speed of rotation. +An [encoder](/components/encoder/) is a device that is used to sense angular position, direction and/or speed of rotation. In this case, the encoders on the left and right motors are `Lenc` and `Renc` and configure the pins to `le` and `re`. {{< alert title="Important" color="note" >}} @@ -161,7 +161,7 @@ When configuring encoded motors for your own robot, you must configure the encod ### Motor configuration -Both [motors](/build/configure/components/motor/) on this rover use the model `gpio` which is the model for basic DC motors that are connected to and controlled by the configured board. +Both [motors](/components/motor/) on this rover use the model `gpio` which is the model for basic DC motors that are connected to and controlled by the configured board. The attributes section lists the board the motor is wired to, and since the rover's motors are encoded the user interface also shows the encoded motor attributes: the encoder name, motor ramp rate limit, encoder ticks per rotation, and max RPM limit. @@ -171,7 +171,7 @@ Click **Go to fancy** to return to the default graphical user interface. ### Base configuration -The [base component](/build/configure/components/base/) is the platform that the other parts of a mobile robot attach to. +The [base component](/components/base/) is the platform that the other parts of a mobile robot attach to. By configuring a base component, the individual components are organized to produce coordinated movement and 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. The base's type is `base` and its model is `wheeled` which configures a robot with wheels on its base, like the Viam Rover. The **left** and **right** attributes configure the motors on the left and right side of the rover, which are named `left` and `right`, respectively. @@ -184,16 +184,16 @@ The **Spin Slip Factor** of 1.76 is used in steering calculations to account for ### Camera configuration -The [camera component](/build/configure/components/camera/) configures the webcam that is plugged into the Raspberry Pi of the rover. +The [camera component](/components/camera/) configures the webcam that is plugged into the Raspberry Pi of the rover. The camera component has the **Type** `camera`, the **Model** `webcam`, and the **Video Path** is `video0`. -For more information on choosing the correct video path, refer to our [webcam documentation](/build/configure/components/camera/webcam/). +For more information on choosing the correct video path, refer to our [webcam documentation](/components/camera/webcam/). ![The video path in the webcam configuration panel is set to 'video0'.](get-started/try-viam/try-viam/camera-config.png) ### Gamepad configuration -The [web gamepad](/build/configure/components/input-controller/webgamepad/) component has the **Type** `input_controller` and the **Model** `webgamepad`. +The [web gamepad](/components/input-controller/webgamepad/) component has the **Type** `input_controller` and the **Model** `webgamepad`. ![The gamepad configuration panel. No attributes are configured.](get-started/try-viam/try-viam/gamepad-config.png) diff --git a/docs/get-started/viam.md b/docs/get-started/viam.md index b21ba136ce..e02cb8ca75 100644 --- a/docs/get-started/viam.md +++ b/docs/get-started/viam.md @@ -73,7 +73,7 @@ For each component that makes up your machine: 2. Test it with the visual [control tab](/fleet/machines/#control). 3. See any problems with in-app [logs](/fleet/machines/#logs), review or roll back configuration [history](/fleet/machines/#history). -After configuring your machine's hardware, you can configure [high level functionality](/build/configure/services/) the same way: +After configuring your machine's hardware, you can configure [high level functionality](/services/) the same way: - **Data Management** enables you to capture and sync data from one or more machines, and use that data for machine learning and beyond. - **Fleet management** enables you to configure, control, debug, and manage entire fleets of machines. @@ -103,8 +103,8 @@ This provides flexibility and security whether you are building tight control lo There are four categories of APIs: - [Robot](https://github.com/viamrobotics/api/blob/main/proto/viam/robot/v1/robot.proto) provides high level robot commands -- [Components](/build/configure/components/) like motors, arms, GPS -- [Services](/build/configure/services/) like computer vision, motion planning, Simultaneous Localization And Mapping (SLAM) +- [Components](/components/) like motors, arms, GPS +- [Services](/services/) like computer vision, motion planning, Simultaneous Localization And Mapping (SLAM) - Cloud applications like [Fleet Management](/fleet/), [Data Management](/data/) You can see the Viam API specification on [GitHub](https://github.com/viamrobotics/api). diff --git a/docs/internals/_index.md b/docs/internals/_index.md index 665b78255c..740e8eb4c9 100644 --- a/docs/internals/_index.md +++ b/docs/internals/_index.md @@ -1,7 +1,7 @@ --- title: "Viam Internals" linkTitle: "Viam Internals" -weight: 80 +weight: 800 simple_list: true type: docs description: "The Deeper Dive section provides more in-depth information on Viam's architecture, operations, and communication methods." diff --git a/docs/internals/kinematic-chain-config.md b/docs/internals/kinematic-chain-config.md index 638a5ab16b..788e037be8 100644 --- a/docs/internals/kinematic-chain-config.md +++ b/docs/internals/kinematic-chain-config.md @@ -10,7 +10,7 @@ tags: ["slam", "services"] Many components have complex kinematic chains and require an additional set of intermediate reference frames to use Viam's [Motion service](/mobility/motion/). -- For example, an [arm](/build/configure/components/arm/) has a reference frame originating where the arm is attached to a surface, but it also has links and joints whose frames of reference matter when attempting to move the arm to a [pose](/internals/orientation-vector/) with [`MoveToPosition()`](/build/configure/components/arm/#movetoposition). +- For example, an [arm](/components/arm/) has a reference frame originating where the arm is attached to a surface, but it also has links and joints whose frames of reference matter when attempting to move the arm to a [pose](/internals/orientation-vector/) with [`MoveToPosition()`](/components/arm/#movetoposition). If you want to implement a component with a complex kinematic chain that is not already built into the RDK, you need to add a file to your driver that details the attachment of the intermediate reference frames on the component. @@ -313,6 +313,6 @@ This is an example .json configuration as used by Viam's [Universal These reference frames are ingested by the frame system. They are not exposed in the [client SDKs](/build/program/), with one exception. -If your resource is an [arm component](/build/configure/components/arm/), you can use the [`GetKinematics()`](/build/configure/components/arm/#getkinematics) method to access its kinematics information. +If your resource is an [arm component](/components/arm/), you can use the [`GetKinematics()`](/components/arm/#getkinematics) method to access its kinematics information. {{% /alert %}} diff --git a/docs/internals/local-configuration-file.md b/docs/internals/local-configuration-file.md index e5e12678b8..4047711140 100644 --- a/docs/internals/local-configuration-file.md +++ b/docs/internals/local-configuration-file.md @@ -9,7 +9,7 @@ images: ["/get-started/installation/thumbnails/manage.png"] description: "Building a local robot configuration file for use with viam-server." --- -The `viam-server` binary uses a JSON-formatted configuration file to define all resources (hardware [components](/build/configure/components/) and software [services](/build/configure/services/)) it has access to, as well as any relevant parameters for those resources. +The `viam-server` binary uses a JSON-formatted configuration file to define all resources (hardware [components](/components/) and software [services](/services/)) it has access to, as well as any relevant parameters for those resources. When you [install `viam-server`](/get-started/installation/) from [the Viam app](https://app.viam.com), you configure your robot directly in the app, and the app will automatically sync your configuration to your robot. @@ -66,7 +66,7 @@ If your robot temporarily disconnects from the internet, its configuration is ca ## Example JSON configuration file If you want to create your own JSON configuration file without using [the Viam app](https://app.viam.com), you can start with the following example file. -This file contains some basic example [component](/build/configure/components/) and [service](/build/configure/services/) configurations, as well as an example of a {{< glossary_tooltip term_id="process" text="process" >}}: +This file contains some basic example [component](/components/) and [service](/services/) configurations, as well as an example of a {{< glossary_tooltip term_id="process" text="process" >}}: ```json {class="line-numbers linkable-line-numbers"} { diff --git a/docs/ml/_index.md b/docs/ml/_index.md index e6d5e74557..8cb09a70b2 100644 --- a/docs/ml/_index.md +++ b/docs/ml/_index.md @@ -1,7 +1,7 @@ --- title: "Machine Learning" linkTitle: "Machine Learning" -weight: 70 +weight: 450 type: "docs" tags: ["data management", "data", "services"] no_list: true @@ -9,7 +9,7 @@ description: "Use Viam's built-in machine learning capabilities to train image c image: "/ml/training.png" imageAlt: "Machine Learning" images: ["/ml/training.png"] -icon: "/build/configure/services/icons/ml.svg" +icon: "/services/icons/ml.svg" aliases: - /manage/ml/ menuindent: true diff --git a/docs/ml/deploy.md b/docs/ml/deploy.md index 0ad0b7e229..765242b485 100644 --- a/docs/ml/deploy.md +++ b/docs/ml/deploy.md @@ -9,7 +9,7 @@ aliases: - /services/ml/ description: "Deploy Machine Learning models to a machine and use the vision service to detect or classify images or to create point clouds of identified objects." modulescript: true -icon: "/build/configure/services/icons/ml.svg" +icon: "/services/icons/ml.svg" # SME: Aaron Casas --- @@ -30,8 +30,8 @@ For some models, like the [Triton MLModel](/registry/examples/triton/) for Jetso {{< cards >}} {{< relatedcard link="/ml/vision/">}} -{{< relatedcard link="/build/configure/components/board/">}} -{{< relatedcard link="/build/configure/components/camera/">}} +{{< relatedcard link="/components/board/">}} +{{< relatedcard link="/components/camera/">}} {{< /cards >}} ### Modular Resources @@ -64,7 +64,7 @@ To configure your service with an existing model on the robot, select **Path to Then specify the absolute **Model Path** and any **Optional Settings** such as the absolute **Label Path** and the **Number of threads**. -![Create a machine learning models service with an existing model](/build/configure/services/available-models.png) +![Create a machine learning models service with an existing model](/services/available-models.png) {{% /tab %}} {{% tab name="Deploy Model" %}} @@ -73,7 +73,7 @@ To configure your service and deploy a model onto your robot, select **Deploy Mo Then select the **Models** and any **Optional Settings** such as the **Number of threads**. -![Create a machine learning models service with a model to be deployed](/build/configure/services/deploy-model.png) +![Create a machine learning models service with a model to be deployed](/services/deploy-model.png) {{% /tab %}} {{< /tabs >}} diff --git a/docs/ml/vision/_index.md b/docs/ml/vision/_index.md index 1e22db49c4..8f05c32265 100644 --- a/docs/ml/vision/_index.md +++ b/docs/ml/vision/_index.md @@ -4,7 +4,7 @@ linkTitle: "Computer Vision" weight: 90 type: "docs" description: "The vision service enables your machine to use its on-board cameras to intelligently see and interpret the world around it." -icon: "/build/configure/services/icons/vision.svg" +icon: "/services/icons/vision.svg" tags: ["vision", "computer vision", "CV", "services"] no_list: true modulescript: false @@ -13,7 +13,7 @@ aliases: # SMEs: Bijan, Khari --- -The vision service enables your machine to use its on-board [cameras](/build/configure/components/camera/) to intelligently see and interpret the world around it. +The vision service enables your machine to use its on-board [cameras](/components/camera/) to intelligently see and interpret the world around it. While the camera component lets you access what your machine's camera sees, the vision service allows you to interpret your image data. Currently, the vision service supports the following kinds of operations: @@ -45,7 +45,7 @@ Different vision service models support different methods: {{% alert title="Tip" color="tip" %}} -The following code examples assume that you have a robot configured with a [camera](/build/configure/components/camera/) and a vision service [detector](/ml/vision/detection/), [classifier](/ml/vision/classification/) or [segmenter](/ml/vision/segmentation/), as applicable, and that you add the required code to connect to your robot and import any required packages at the top of your code file. +The following code examples assume that you have a robot configured with a [camera](/components/camera/) and a vision service [detector](/ml/vision/detection/), [classifier](/ml/vision/classification/) or [segmenter](/ml/vision/segmentation/), as applicable, and that you add the required code to connect to your robot and import any required packages at the top of your code file. Go to your robot's **Code sample** tab on the [Viam app](https://app.viam.com) for boilerplate code to connect to your robot. {{% /alert %}} diff --git a/docs/ml/vision/classification.md b/docs/ml/vision/classification.md index ef6172c4e2..9f1714330b 100644 --- a/docs/ml/vision/classification.md +++ b/docs/ml/vision/classification.md @@ -137,8 +137,8 @@ If the classifier's results exceed the confidence threshold, the **Run model** s If you intend to use the classifier with a camera that is part of your robot, you can test your classifier from the [**Control tab**](/fleet/machines/#control) or with code: -1. Configure a [camera component](/build/configure/components/camera/). -2. (Optional) If you would like to see classifications from the **Control tab**, configure a [transform camera](/build/configure/components/camera/transform/) with the following attributes : +1. Configure a [camera component](/components/camera/). +2. (Optional) If you would like to see classifications from the **Control tab**, configure a [transform camera](/components/camera/transform/) with the following attributes : ```json { @@ -159,7 +159,7 @@ If you intend to use the classifier with a camera that is part of your robot, yo 4. Navigate to the **Control** tab, click on your transform camera and toggle it on. The transform camera will now show classifications on the image. - ![Model recognizes a star on camera feed](/build/configure/services/model-on-camera.png) + ![Model recognizes a star on camera feed](/services/model-on-camera.png) 5. The following code gets the robot’s vision service and then runs a classifier vision model on an image from the robot's camera `"cam1"`. diff --git a/docs/ml/vision/detection.md b/docs/ml/vision/detection.md index eb6b6c258b..8dcf812cdb 100644 --- a/docs/ml/vision/detection.md +++ b/docs/ml/vision/detection.md @@ -233,7 +233,7 @@ You can test your detector with [live camera footage](#live-camera-footage) or [ If you intend to use the detector with a camera that is part of your robot, you can test your detector from the [**Control tab**](/fleet/machines/#control) or with code: -1. Configure a [camera component](/build/configure/components/camera/). +1. Configure a [camera component](/components/camera/). {{< alert title="Tip" color="tip" >}} This is the camera whose name you need to pass to vision service methods. {{< /alert >}} diff --git a/docs/ml/vision/segmentation.md b/docs/ml/vision/segmentation.md index aaf91b6b37..78142c6de6 100644 --- a/docs/ml/vision/segmentation.md +++ b/docs/ml/vision/segmentation.md @@ -324,9 +324,9 @@ The following parameters are available for an `"obstacles_depth"` segmenter: If you want to identify multiple boxes over the flat plane with your segmenter: -- First, [configure your frame system](/mobility/frame-system/#configuration) to configure the relative spatial orientation of the components of your robot, including your [camera](/build/configure/components/camera/), within Viam's [frame system service](/mobility/frame-system/). +- First, [configure your frame system](/mobility/frame-system/#configuration) to configure the relative spatial orientation of the components of your robot, including your [camera](/components/camera/), within Viam's [frame system service](/mobility/frame-system/). - After configuring your frame system, your camera will populate its own `Properties` with these spatial intrinsic parameters from the frame system. - - You can get those parameters from your camera through the [camera API](/build/configure/components/camera/#getproperties). + - You can get those parameters from your camera through the [camera API](/components/camera/#getproperties). - The segmenter now returns multiple boxes within the `GeometryInFrame` object it captures. Click **Save config** and proceed to [test your segmenter](#test-your-segmenter). @@ -336,7 +336,7 @@ Click **Save config** and proceed to [test your segmenter](#test-your-segmenter) `obstacles_distance` is a vision service model that takes point clouds from a camera input and returns the average single closest point to the camera as a perceived obstacle. It is best for transient obstacle avoidance. -For example, if you have an ultrasonic distance sensor as an [`ultrasonic` camera](/build/configure/components/camera/ultrasonic/), this model will query the sensor `"num_queries"` times, and then take the average point from those measurements and return that as an obstacle. +For example, if you have an ultrasonic distance sensor as an [`ultrasonic` camera](/components/camera/ultrasonic/), this model will query the sensor `"num_queries"` times, and then take the average point from those measurements and return that as an obstacle. {{< tabs >}} {{% tab name="Builder" %}} @@ -399,7 +399,7 @@ The following parameters are available for a `obstacles_distance` segmenter: | Parameter | Inclusion | Description | | --------- | --------- | ----------- | -| `num_queries`| Optional | How many times the model should call [`GetPointCloud()`](/build/configure/components/camera/#getpointcloud) before taking the average of the measurements and returning the single closest point. Accepts an integer between `1` and `20`.
    Default: `10` | +| `num_queries`| Optional | How many times the model should call [`GetPointCloud()`](/components/camera/#getpointcloud) before taking the average of the measurements and returning the single closest point. Accepts an integer between `1` and `20`.
    Default: `10` | ## Test your segmenter diff --git a/docs/mobility/_index.md b/docs/mobility/_index.md index fc36708945..57d84004e3 100644 --- a/docs/mobility/_index.md +++ b/docs/mobility/_index.md @@ -1,7 +1,7 @@ --- title: "Mobility" linkTitle: "Mobility" -weight: 70 +weight: 460 simple_list: true type: "docs" description: "Reference and Background Material" diff --git a/docs/mobility/base-rc/_index.md b/docs/mobility/base-rc/_index.md index a57962701d..dbe543fa29 100644 --- a/docs/mobility/base-rc/_index.md +++ b/docs/mobility/base-rc/_index.md @@ -5,15 +5,15 @@ weight: 60 type: "docs" description: "The base remote control service allows you to remotely control a base with an input controller like a gamepad." tags: ["base", "services", "rover", "input controller", "remote control"] -icon: "/build/configure/services/icons/base-rc.svg" -images: ["/build/configure/services/icons/base-rc.svg"] +icon: "/services/icons/base-rc.svg" +images: ["/services/icons/base-rc.svg"] aliases: - "/services/base-rc/" # SME: Eric --- -The Base Remote Control service implements an [input controller](/build/configure/components/input-controller/) as a remote control for a [base](/build/configure/components/base/). -This uses the [`input` api](/build/configure/components/input-controller/#api) to make it easy to add remote drive controls for your rover or other mobile robot with a controller like a gamepad. +The Base Remote Control service implements an [input controller](/components/input-controller/) as a remote control for a [base](/components/base/). +This uses the [`input` api](/components/input-controller/#api) to make it easy to add remote drive controls for your rover or other mobile robot with a controller like a gamepad. Add the Base Remote Control service after configuring your robot with a base and input controller to control the linear and angular velocity of the base with the controller's button or joystick controls. @@ -30,16 +30,16 @@ You can monitor the input from these controls in the **Control** tab of the [Via ## Used With {{< cards >}} -{{< relatedcard link="/build/configure/components/base/" required="yes" >}} -{{< relatedcard link="/build/configure/components/input-controller/" required="yes" >}} -{{< relatedcard link="/build/configure/components/movement-sensor/" >}} +{{< relatedcard link="/components/base/" required="yes" >}} +{{< relatedcard link="/components/input-controller/" required="yes" >}} +{{< relatedcard link="/components/movement-sensor/" >}} {{< /cards >}} {{% snippet "required-legend.md" %}} ## Configuration -You must configure a [base](/build/configure/components/base/) with a [movement sensor](/build/configure/components/movement-sensor/) as part of your robot to be able to use a Base Remote Control service. +You must configure a [base](/components/base/) with a [movement sensor](/components/movement-sensor/) as part of your robot to be able to use a Base Remote Control service. {{< tabs >}} {{% tab name="Config Builder" %}} @@ -89,11 +89,11 @@ The following attributes are available for base remote control services: | Name | Type | Inclusion | Description | | ---- | ---- | --------- | ----------- | -| `base` | string | **Required** | The `name` of the [base](/build/configure/components/base/) you have configured for the base you are operating with this service. | -| `input_controller` | string | **Required** | The `name` of the [input controller](/build/configure/components/input-controller/) you have configured for the base you are operating with this service. | +| `base` | string | **Required** | The `name` of the [base](/components/base/) you have configured for the base you are operating with this service. | +| `input_controller` | string | **Required** | The `name` of the [input controller](/components/input-controller/) you have configured for the base you are operating with this service. | | `control_mode` | string | Optional | The mode of remote control you want to use.
    Options:
    • `"arrowControl"`
    • `"triggerSpeedControl"`
    • `"buttonControl"`
    • `"joyStickControl"`
    • `"droneControl"`

    Default: `"arrowControl"` | -| `max_angular_degs_per_sec` | float | Optional | The max angular velocity for the [base](/build/configure/components/base/) in degrees per second. | -| `max_linear_mm_per_sec` | float | Optional | The max linear velocity for the [base](/build/configure/components/base/) in meters per second. | +| `max_angular_degs_per_sec` | float | Optional | The max angular velocity for the [base](/components/base/) in degrees per second. | +| `max_linear_mm_per_sec` | float | Optional | The max linear velocity for the [base](/components/base/) in meters per second. | ## API @@ -103,7 +103,7 @@ The base remote control service supports the following methods: {{% alert title="Tip" color="tip" %}} -The following code examples assume that you have a robot configured with a [base](/build/configure/components/base/) named `"my_base"`, [input controller](/build/configure/components/input-controller/) named `"my_controller"`, and Base Remote Control service named `"my_base_rc_service"`. +The following code examples assume that you have a robot configured with a [base](/components/base/) named `"my_base"`, [input controller](/components/input-controller/) named `"my_controller"`, and Base Remote Control service named `"my_base_rc_service"`. Make sure to add the required code to connect to your robot and import any required packages at the top of your code file. Go to your robot's **Code sample** tab on the [Viam app](https://app.viam.com) for boilerplate code to connect to your robot. diff --git a/docs/mobility/frame-system/_index.md b/docs/mobility/frame-system/_index.md index c8d9d46d6d..18b29bc746 100644 --- a/docs/mobility/frame-system/_index.md +++ b/docs/mobility/frame-system/_index.md @@ -5,7 +5,7 @@ description: "The frame system holds reference frame information for the relativ type: docs weight: 10 no_list: true -icon: "/build/configure/services/icons/frame-system.svg" +icon: "/services/icons/frame-system.svg" tags: ["frame system", "services"] aliases: - /services/frame-system/ @@ -22,17 +22,17 @@ It stores the required contextual information to use the position and orientatio ## Used With {{< cards >}} -{{< relatedcard link="/build/configure/services/arm/">}} -{{< relatedcard link="/build/configure/components/base/">}} -{{< relatedcard link="/build/configure/components/board/">}} -{{< relatedcard link="/build/configure/services/camera/">}} -{{< relatedcard link="/build/configure/services/gantry/">}} -{{< relatedcard link="/build/configure/services/motor/">}} +{{< relatedcard link="/services/arm/">}} +{{< relatedcard link="/components/base/">}} +{{< relatedcard link="/components/board/">}} +{{< relatedcard link="/services/camera/">}} +{{< relatedcard link="/services/gantry/">}} +{{< relatedcard link="/services/motor/">}} {{< /cards >}} ## Configuration -To enable the default frame for a given [component](/build/configure/components/) on a robot, navigate to the **Config** tab of the robot's page in [the Viam app](https://app.viam.com) and click **Components**. +To enable the default frame for a given [component](/components/) on a robot, navigate to the **Config** tab of the robot's page in [the Viam app](https://app.viam.com) and click **Components**. With **mode** as **Builder**, click **Add Frame** on the component's card and **Save Config**. To adjust the frame from its default configuration, change the parameters as needed for your robot before saving. @@ -102,7 +102,7 @@ The `Orientation` parameter offers `Types` for ease of configuration, but the fr {{% alert title="Tip" color="tip" %}} -For [base components](/build/configure/components/base/), Viam considers `+X` to be to the right, `+Y` to be forwards, and `+Z` to be up. +For [base components](/components/base/), Viam considers `+X` to be to the right, `+Y` to be forwards, and `+Z` to be up. You can use [the right-hand rule](https://en.wikipedia.org/wiki/Right-hand_rule) to understand rotation about any of these axes. For non-base components, there is no inherent concept of "forward," so it is up to the user to define frames that make sense in their application. @@ -127,7 +127,7 @@ This tab provides a simple interface for simultaneously viewing and editing the For example: -Consider a robot configured with a [`jetson` board](/build/configure/components/board/), wired to a [`webcam` camera](/build/configure/components/camera/webcam/) and a [`wheeled` base](/build/configure/components/base/wheeled/) with two [motors](/build/configure/components/motor/) driving its wheels. +Consider a robot configured with a [`jetson` board](/components/board/), wired to a [`webcam` camera](/components/camera/webcam/) and a [`wheeled` base](/components/base/wheeled/) with two [motors](/components/motor/) driving its wheels. No reference frame configuration has been specified, so on the **Frame System** subtab of the **Config** tab, the components are shown to all be located on the default `world` origin point as follows: @@ -357,11 +357,11 @@ For example: - In our [example of nested dynamic attachment](/mobility/frame-system/nested-frame-config/), the arm can be managed by the frame system without additional transforms because the base of the arm is fixed with respect to the gantry's platform, and the gantry's origin is fixed with respect to the `world` reference frame (centered at `(0, 0, 0)` in the robot's coordinate system). - However, an arm with an attached [camera](/build/configure/components/camera/) might generate additional information about the poses of other objects with respect to references frames on the robot. + However, an arm with an attached [camera](/components/camera/) might generate additional information about the poses of other objects with respect to references frames on the robot. With the [vision service](/ml/vision/), the camera might detect objects that do not have a relationship to a `world` reference frame. - If a [camera](/build/configure/components/camera/) is looking for an apple or an orange, the arm can be commanded to move to the detected fruit's location by providing an additional transform that contains the detected pose with respect to the camera that performed the detection. + If a [camera](/components/camera/) is looking for an apple or an orange, the arm can be commanded to move to the detected fruit's location by providing an additional transform that contains the detected pose with respect to the camera that performed the detection. The detecting component (camera) would be fixed with respect to the `world` reference frame, and would supply the position and orientation of the detected object. diff --git a/docs/mobility/frame-system/frame-config.md b/docs/mobility/frame-system/frame-config.md index 889ede5cd2..68838c5053 100644 --- a/docs/mobility/frame-system/frame-config.md +++ b/docs/mobility/frame-system/frame-config.md @@ -10,7 +10,7 @@ aliases: # SMEs: Peter L, Gautham, Bijan --- -Imagine a robotic [arm](/build/configure/components/arm/) is attached to a table. +Imagine a robotic [arm](/components/arm/) is attached to a table. Consider one corner of the table the arm is attached to to be the origin of the `world`, `(0, 0, 0)`. Measure from that point to the base of the arm to get the `translation` coordinates. diff --git a/docs/mobility/frame-system/nested-frame-config.md b/docs/mobility/frame-system/nested-frame-config.md index 638da429e4..a18235a721 100644 --- a/docs/mobility/frame-system/nested-frame-config.md +++ b/docs/mobility/frame-system/nested-frame-config.md @@ -10,7 +10,7 @@ aliases: # SMEs: Peter L, Gautham, Bijan --- -Imagine a robotic [arm](/build/configure/components/arm/) is attached to the actuator (moving part) of a [gantry](/build/configure/components/gantry/). +Imagine a robotic [arm](/components/arm/) is attached to the actuator (moving part) of a [gantry](/components/gantry/). Consider the point that the gantry itself is fixed to as the center of the `world`, making the gantry's origin the same as the `world` origin: `(0, 0, 0)`. diff --git a/docs/mobility/motion/_index.md b/docs/mobility/motion/_index.md index a9cc2deccf..edd3f845ea 100644 --- a/docs/mobility/motion/_index.md +++ b/docs/mobility/motion/_index.md @@ -5,7 +5,7 @@ weight: 20 type: "docs" description: "The motion service enables your robot to plan and move its components relative to itself, other robots, and the world." tags: ["motion", "motion planning", "services"] -icon: "/build/configure/services/icons/motion.svg" +icon: "/services/icons/motion.svg" no_list: true aliases: - "/services/motion/" @@ -27,10 +27,10 @@ The motion service can: {{< cards >}} {{< relatedcard link="/mobility/frame-system/" >}} -{{< relatedcard link="/build/configure/components/movement-sensor/" required="yes">}} -{{< relatedcard link="/build/configure/components/base/" >}} -{{< relatedcard link="/build/configure/components/arm/" >}} -{{< relatedcard link="/build/configure/components/gripper/" >}} +{{< relatedcard link="/components/movement-sensor/" required="yes">}} +{{< relatedcard link="/components/base/" >}} +{{< relatedcard link="/components/arm/" >}} +{{< relatedcard link="/components/gripper/" >}} {{< /cards >}} {{% snippet "required-legend.md" %}} @@ -251,7 +251,7 @@ You can use the `supplemental_transforms` argument to augment the robot's existi For more information, see the [Python SDK Docs](https://python.viam.dev/autoapi/viam/services/motion/index.html#viam.services.motion.MotionClient.get_pose). -The following code example gets the pose of the tip of a [gripper](/build/configure/components/gripper/) named `my_gripper` which is attached to the end of an arm, in the "world" `reference_frame`: +The following code example gets the pose of the tip of a [gripper](/components/gripper/) named `my_gripper` which is attached to the end of an arm, in the "world" `reference_frame`: ```python {class="line-numbers linkable-line-numbers"} from viam.components.gripper import Gripper @@ -356,7 +356,7 @@ logger.Info("Orientation of myArm from the motion service:", myArmMotionPose.Pos ### MoveOnMap -Move a [base](/build/configure/components/base/) component to a [`Pose`](https://python.viam.dev/autoapi/viam/proto/common/index.html#viam.proto.common.Pose) in respect to the origin of a {{< glossary_tooltip term_id="slam" text="SLAM" >}} map. +Move a [base](/components/base/) component to a [`Pose`](https://python.viam.dev/autoapi/viam/proto/common/index.html#viam.proto.common.Pose) in respect to the origin of a {{< glossary_tooltip term_id="slam" text="SLAM" >}} map. {{< tabs >}} {{% tab name="Python" %}} @@ -429,16 +429,16 @@ success, err := motionService.MoveOnMap(context.Background(), myBaseResourceName ### MoveOnGlobe -Move a [base](/build/configure/components/base/) component to a destination GPS point, represented in geographic notation _(latitude, longitude)_. -Use a [movement sensor](/build/configure/components/movement-sensor/) to check the location of the robot. +Move a [base](/components/base/) component to a destination GPS point, represented in geographic notation _(latitude, longitude)_. +Use a [movement sensor](/components/movement-sensor/) to check the location of the robot. {{< alert title="Usage" color="tip" >}} -`MoveOnGlobe()` is intended for use with the [navigation service](/mobility/navigation/), providing autonomous GPS navigation for rover [bases](/build/configure/components/base/). +`MoveOnGlobe()` is intended for use with the [navigation service](/mobility/navigation/), providing autonomous GPS navigation for rover [bases](/components/base/). To use `MoveOnGlobe()`, your movement sensor must be able to measure the GPS location and orientation of the robot. -Make sure the [movement sensor](/build/configure/components/movement-sensor/) you use supports usage of the following methods in its {{< glossary_tooltip term_id="model" text="model's" >}} implementation of the [movement sensor API](/build/configure/components/movement-sensor/#api). +Make sure the [movement sensor](/components/movement-sensor/) you use supports usage of the following methods in its {{< glossary_tooltip term_id="model" text="model's" >}} implementation of the [movement sensor API](/components/movement-sensor/#api). - It must support `GetPosition()` to report the robot's current GPS location. - It must **also** support **either** `GetCompassHeading()` or `GetOrientation()` to report which way the robot is facing. @@ -463,11 +463,11 @@ Translation in obstacles is not supported by the [navigation service](/mobility/ - `component_name` [(ResourceName)](https://python.viam.dev/autoapi/viam/gen/common/v1/common_pb2/index.html#viam.gen.common.v1.common_pb2.ResourceName): The `ResourceName` of the base to move. - `destination` [(GeoPoint)](https://python.viam.dev/autoapi/viam/components/movement_sensor/index.html#viam.components.movement_sensor.GeoPoint): The location of the component's destination, represented in geographic notation as a [GeoPoint](https://python.viam.dev/autoapi/viam/components/movement_sensor/index.html#viam.components.movement_sensor.GeoPoint) _(lat, lng)_. -- `movement_sensor_name` [(ResourceName)](https://python.viam.dev/autoapi/viam/gen/common/v1/common_pb2/index.html#viam.gen.common.v1.common_pb2.ResourceName): The `ResourceName` of the [movement sensor](/build/configure/components/movement-sensor/) that you want to use to check the robot's location. +- `movement_sensor_name` [(ResourceName)](https://python.viam.dev/autoapi/viam/gen/common/v1/common_pb2/index.html#viam.gen.common.v1.common_pb2.ResourceName): The `ResourceName` of the [movement sensor](/components/movement-sensor/) that you want to use to check the robot's location. - `obstacles` [(Optional[Sequence[GeoObstacle]])](https://python.viam.dev/autoapi/viam/gen/common/v1/common_pb2/index.html#viam.gen.common.v1.common_pb2.GeoObstacle): Obstacles to consider when planning the motion of the component, with each represented as a `GeoObstacle`.
    • Default: `None`
    - `heading` [(Optional[float])](https://docs.python.org/library/typing.html#typing.Optional): The compass heading, in degrees, that the robot's movement sensor should report at the `destination` point.
    • Range: `[0-360)`
    • Default: `None`
    - `configuration` [(Optional[MotionConfiguration])](https://python.viam.dev/autoapi/viam/proto/service/motion/index.html#viam.proto.service.motion.MotionConfiguration): The configuration you want to set across this robot for this motion service. This parameter and each of its fields are optional. - - `obstacle_detectors` [(Iterable[ObstacleDetector])](https://python.viam.dev/autoapi/viam/proto/service/motion/index.html#viam.proto.service.motion.ObstacleDetector): The names of each [vision service](/ml/vision/) and [camera](/build/configure/components/camera/) resource pair you want to use for transient obstacle avoidance. + - `obstacle_detectors` [(Iterable[ObstacleDetector])](https://python.viam.dev/autoapi/viam/proto/service/motion/index.html#viam.proto.service.motion.ObstacleDetector): The names of each [vision service](/ml/vision/) and [camera](/components/camera/) resource pair you want to use for transient obstacle avoidance. - `position_polling_frequency_hz` [(float)](https://docs.python.org/3/library/functions.html#float): The frequency in hz to poll the position of the robot. - `obstacle_polling_frequency_hz` [(float)](https://docs.python.org/3/library/functions.html#float): The frequency in hz to poll the vision service for new obstacles. - `plan_deviation_m` [(float)](https://docs.python.org/3/library/functions.html#float): The distance in millimeters that the machine can deviate from the motion plan. @@ -509,10 +509,10 @@ success = await motion.move_on_globe( - `componentName` [(resource.Name)](https://pkg.go.dev/go.viam.com/rdk/resource#Name): The `resource.Name` of the base to move. - `destination` [(\*geo.Point)](https://pkg.go.dev/github.com/kellydunn/golang-geo#Point): The location of the component's destination, represented in geographic notation as a [Point](https://pkg.go.dev/github.com/kellydunn/golang-geo#Point) _(lat, lng)_. - `heading` [(float64)](https://pkg.go.dev/builtin#float64): The compass heading, in degrees, that the robot's movement sensor should report at the `destination` point.
    • Range: `[0-360)`
    • Default: `None`
    -- `movementSensorName` [(resource.Name)](https://pkg.go.dev/go.viam.com/rdk/resource#Name): The `resource.Name` of the [movement sensor](/build/configure/components/movement-sensor/) that you want to use to check the robot's location. +- `movementSensorName` [(resource.Name)](https://pkg.go.dev/go.viam.com/rdk/resource#Name): The `resource.Name` of the [movement sensor](/components/movement-sensor/) that you want to use to check the robot's location. - `obstacles` [([]\*spatialmath.GeoObstacle)](https://pkg.go.dev/go.viam.com/rdk/spatialmath#GeoObstacle): Obstacles to consider when planning the motion of the component, with each represented as a `GeoObstacle`.
    • Default: `None`
    - `motionConfig` [(\*MotionConfiguration)](https://pkg.go.dev/go.viam.com/rdk/services/motion#MotionConfiguration): The configuration you want to set across this robot for this motion service. This parameter and each of its fields are optional. - - `ObstacleDetectors` [([]ObstacleDetectorName)](https://pkg.go.dev/go.viam.com/rdk/services/motion#ObstacleDetectorName): The names of each [vision service](/ml/vision/) and [camera](/build/configure/components/camera/) resource pair you want to use for transient obstacle avoidance. + - `ObstacleDetectors` [([]ObstacleDetectorName)](https://pkg.go.dev/go.viam.com/rdk/services/motion#ObstacleDetectorName): The names of each [vision service](/ml/vision/) and [camera](/components/camera/) resource pair you want to use for transient obstacle avoidance. - `PositionPollingFreqHz` [(float64)](https://pkg.go.dev/builtin#float64): The frequency in hz to poll the position of the robot. - `ObstaclePollingFreqHz` [(float64)](https://pkg.go.dev/builtin#float64): The frequency in hz to poll the vision service for new obstacles. - `PlanDeviationMM` [(float64)](https://pkg.go.dev/builtin#float64): The distance in millimeters that the machine can deviate from the motion plan. diff --git a/docs/mobility/navigation/_index.md b/docs/mobility/navigation/_index.md index b6d460a1a4..df75e09a57 100644 --- a/docs/mobility/navigation/_index.md +++ b/docs/mobility/navigation/_index.md @@ -5,8 +5,8 @@ description: "The navigation service uses GPS to autonomously navigate a rover t type: docs weight: 40 no_list: true -icon: "/build/configure/services/icons/navigation.svg" -images: ["/build/configure/services/icons/navigation.svg"] +icon: "/services/icons/navigation.svg" +images: ["/services/icons/navigation.svg"] tags: ["navigation", "services", "base", "rover"] aliases: - "/services/navigation/" @@ -14,34 +14,34 @@ aliases: --- The Navigation service is the stateful definition of Viam's [motion service](/mobility/motion/). -It uses GPS to autonomously navigate a rover [base](/build/configure/components/base/) to user defined endpoints called waypoints. +It uses GPS to autonomously navigate a rover [base](/components/base/) to user defined endpoints called waypoints. Configure your base with a navigation service, add waypoints, and set the mode of the service to [**Waypoint**](#setmode) to move your rover along a defined path at your desired motion configuration. ## Used With {{< cards >}} -{{< relatedcard link="/build/configure/components/base/" required="yes" >}} -{{< relatedcard link="/build/configure/components/movement-sensor/" required="yes" >}} -{{< relatedcard link="/build/configure/components/camera/" >}} +{{< relatedcard link="/components/base/" required="yes" >}} +{{< relatedcard link="/components/movement-sensor/" required="yes" >}} +{{< relatedcard link="/components/camera/" >}} {{< /cards >}} {{% snippet "required-legend.md" %}} ## Requirements -You must configure a [base](/build/configure/components/base/) with [movement sensors](/build/configure/components/movement-sensor/) as part of your robot to configure a Navigation service. +You must configure a [base](/components/base/) with [movement sensors](/components/movement-sensor/) as part of your robot to configure a Navigation service. -To use the navigation service, configure a stack of movement sensors that implement the following methods in their {{< glossary_tooltip term_id="model" text="models'" >}} implementations of the [movement sensor API](/build/configure/components/movement-sensor/#api): +To use the navigation service, configure a stack of movement sensors that implement the following methods in their {{< glossary_tooltip term_id="model" text="models'" >}} implementations of the [movement sensor API](/components/movement-sensor/#api): -- [`GetPosition()`](/build/configure/components/movement-sensor/#getposition) -- [`GetCompassHeading()`](/build/configure/components/movement-sensor/#getcompassheading) -- [`GetProperties()`](/build/configure/components/movement-sensor/#getproperties) +- [`GetPosition()`](/components/movement-sensor/#getposition) +- [`GetCompassHeading()`](/components/movement-sensor/#getcompassheading) +- [`GetProperties()`](/components/movement-sensor/#getproperties) The base should implement the following: -- [`SetVelocity()`](/build/configure/components/base/#setvelocity) -- [`GetGeometries()`](/build/configure/components/base/#getgeometries) -- [`GetProperties()`](/build/configure/components/base/#getproperties) +- [`SetVelocity()`](/components/base/#setvelocity) +- [`GetGeometries()`](/components/base/#getgeometries) +- [`GetProperties()`](/components/base/#getproperties) See [navigation concepts](#navigation-concepts) for more info on how to implement and use movement sensors taking these measurements. @@ -149,15 +149,15 @@ The following attributes are available for `Navigation` services: | Name | Type | Inclusion | Description | | ---- | ---- | --------- | ----------- | | `store` | obj | **Required** | The type and configuration of data storage to use. Either type `"memory"`, where no additional configuration is needed and the waypoints are stored in local memory while the Navigation process is running, or `"mongodb"`, where data persists at the specified [MongoDB URI](https://www.mongodb.com/docs/manual/reference/connection-string) of your MongoDB deployment.
    Default: `"memory"` | -| `base` | string | **Required** | The `name` you have configured for the [base](/build/configure/components/base/) you are operating with this service. | -| `movement_sensor` | string | **Required** | The `name` of the [movement sensor](/build/configure/components/movement-sensor/) you have configured for the base you are operating with this service. | +| `base` | string | **Required** | The `name` you have configured for the [base](/components/base/) you are operating with this service. | +| `movement_sensor` | string | **Required** | The `name` of the [movement sensor](/components/movement-sensor/) you have configured for the base you are operating with this service. | | `motion_service` | string | Optional | The `name` of the [motion service](/mobility/motion/) you have configured for the base you are operating with this service. If you have not added a motion service to your robot, the default motion service will be used. Reference this default service in your code with the name `"builtin"`. | -| `obstacle_detectors` | array | Optional | An array containing objects with the `name` of each [`"camera"`](/build/configure/components/camera/) you have configured for the base you are navigating, along with the `name` of the [`"vision_service"`](/mobility/motion/) you are using to detect obstacles. Note that any vision services on remote parts will only be able to access cameras on the same remote part. | +| `obstacle_detectors` | array | Optional | An array containing objects with the `name` of each [`"camera"`](/components/camera/) you have configured for the base you are navigating, along with the `name` of the [`"vision_service"`](/mobility/motion/) you are using to detect obstacles. Note that any vision services on remote parts will only be able to access cameras on the same remote part. | | `position_polling_frequency_hz` | float | Optional | The frequency to poll for the position of the robot.
    Default: `2` | | `obstacle_polling_frequency_hz` | float | Optional | The frequency in hz to poll each vision service for new obstacles.
    Default: `2` | | `plan_deviation_m` | float | Optional | The distance in meters that a robot is allowed to deviate from the motion plan.
    Default: `3`| -| `degs_per_sec` | float | Optional | The default angular velocity for the [base](/build/configure/components/base/) in degrees per second.
    Default: `60` | -| `meters_per_sec` | float | Optional | The default linear velocity for the [base](/build/configure/components/base/) in meters per second.
    Default: `0.3` | +| `degs_per_sec` | float | Optional | The default angular velocity for the [base](/components/base/) in degrees per second.
    Default: `60` | +| `meters_per_sec` | float | Optional | The default linear velocity for the [base](/components/base/) in meters per second.
    Default: `0.3` | | `obstacles` | obj | Optional | Any obstacles you wish to add to the robot's path. See the [motion service](/mobility/motion/) for more information. | ### Configure and calibrate the frame system service for GPS navigation @@ -166,12 +166,12 @@ The following attributes are available for `Navigation` services: The [frame system service](/mobility/frame-system/) is an internally managed and mostly static system for storing the reference frame of each component of a robot within a coordinate system configured by the user. -It stores the required contextual information for Viam's services like [Motion](/mobility/motion/) and [Vision](/ml/vision/) to use the position and orientation readings returned by components like [movement sensors](/build/configure/components/movement-sensor/). +It stores the required contextual information for Viam's services like [Motion](/mobility/motion/) and [Vision](/ml/vision/) to use the position and orientation readings returned by components like [movement sensors](/components/movement-sensor/). {{% /alert %}} To make sure your rover base's autonomous GPS navigation with the navigation service is accurate, configure and calibrate the frame system service for the components of your robot. -To start, add the frame system service to your rover [base](/build/configure/components/base/) and [movement sensor](/build/configure/components/movement-sensor/). +To start, add the frame system service to your rover [base](/components/base/) and [movement sensor](/components/movement-sensor/). - Navigate to the **Config** tab of your robot's page in [the Viam app](https://app.viam.com). Scroll to the card with the name of your base: @@ -758,7 +758,7 @@ Here, you can toggle the mode of the service between **Manual** and **Waypoint** ## Navigation Concepts The following concepts are important to understand when utilizing the navigation service. -Each concept is a type of relative or absolute measurement, taken by a [movement sensor](/build/configure/components/movement-sensor/), which can then be utilized by your robot to navigate across space. +Each concept is a type of relative or absolute measurement, taken by a [movement sensor](/components/movement-sensor/), which can then be utilized by your robot to navigate across space. Here's how to make use of the following types of measurements: @@ -771,12 +771,12 @@ Here's how to make use of the following types of measurements: ### Compass Heading -The following {{< glossary_tooltip term_id="model" text="models" >}} of [movement sensor](/build/configure/components/movement-sensor/) take compass heading measurements: +The following {{< glossary_tooltip term_id="model" text="models" >}} of [movement sensor](/components/movement-sensor/) take compass heading measurements: -- [gps-nmea](/build/configure/components/movement-sensor/gps/gps-nmea/) - some GPS hardware only report heading while moving. -- [gps-nmea-rtk-pmtk](/build/configure/components/movement-sensor/gps/gps-nmea-rtk-pmtk/) - some GPS hardware only report heading while moving. -- [gps-nmea-rtk-serial](/build/configure/components/movement-sensor/gps/gps-nmea-rtk-serial/) - some GPS hardware only report heading while moving. -- [imu-wit](/build/configure/components/movement-sensor/imu/imu-wit/) +- [gps-nmea](/components/movement-sensor/gps/gps-nmea/) - some GPS hardware only report heading while moving. +- [gps-nmea-rtk-pmtk](/components/movement-sensor/gps/gps-nmea-rtk-pmtk/) - some GPS hardware only report heading while moving. +- [gps-nmea-rtk-serial](/components/movement-sensor/gps/gps-nmea-rtk-serial/) - some GPS hardware only report heading while moving. +- [imu-wit](/components/movement-sensor/imu/imu-wit/) An example of a `Compass Heading` reading: @@ -787,14 +787,14 @@ 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](/build/configure/components/movement-sensor/#supported-models) on your robot. -Then use the movement sensor API's [`GetCompassHeading()`](/build/configure/components/movement-sensor/#getcompassheading) method to get readings from the sensor. +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 -The following {{< glossary_tooltip term_id="model" text="models" >}} of [movement sensor](/build/configure/components/movement-sensor/) take orientation measurements: +The following {{< glossary_tooltip term_id="model" text="models" >}} of [movement sensor](/components/movement-sensor/) take orientation measurements: -- [imu-wit](/build/configure/components/movement-sensor/imu/imu-wit/) +- [imu-wit](/components/movement-sensor/imu/imu-wit/) An example of an `Orientation` reading: @@ -808,17 +808,17 @@ 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](/mobility/frame-system/). The `GetOrientation` readings will report orientations relative to that initial frame. -To read orientation, first [configure a capable movement sensor](/build/configure/components/movement-sensor/#supported-models) on your robot. +To read orientation, first [configure a capable movement sensor](/components/movement-sensor/#supported-models) on your robot. Additionally, follow [these instructions](/mobility/frame-system/#configuration) to configure the geometries of each component of your robot within the [frame system](/mobility/frame-system/). -Then use the movement sensor API's [`GetOrientation()`](/build/configure/components/movement-sensor/#getorientation) method to get orientation readings. +Then use the movement sensor API's [`GetOrientation()`](/components/movement-sensor/#getorientation) method to get orientation readings. ### Angular Velocity -The following {{< glossary_tooltip term_id="model" text="models" >}} of the [movement sensor](/build/configure/components/movement-sensor/) component take angular velocity measurements: +The following {{< glossary_tooltip term_id="model" text="models" >}} of the [movement sensor](/components/movement-sensor/) component take angular velocity measurements: -- [imu-wit](/build/configure/components/movement-sensor/imu/imu-wit/) -- [wheeled-odometry](/build/configure/components/movement-sensor/wheeled-odometry/) -- [gyro-mpu6050](/build/configure/components/movement-sensor/mpu6050/) +- [imu-wit](/components/movement-sensor/imu/imu-wit/) +- [wheeled-odometry](/components/movement-sensor/wheeled-odometry/) +- [gyro-mpu6050](/components/movement-sensor/mpu6050/) An example of an `AngularVelocity` reading: @@ -829,16 +829,16 @@ 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](/build/configure/components/movement-sensor/#supported-models) on your robot. -Then use the movement sensor API's [`GetAngularVelocity()`](/build/configure/components/movement-sensor/#getangularvelocity) method to get angular velocity readings from the sensor. +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 -The following {{< glossary_tooltip term_id="model" text="models" >}} of the [movement sensor](/build/configure/components/movement-sensor/) component take position measurements: +The following {{< glossary_tooltip term_id="model" text="models" >}} of the [movement sensor](/components/movement-sensor/) component take position measurements: -- [gps-nmea](/build/configure/components/movement-sensor/gps/gps-nmea/) -- [gps-nmea-rtk-pmtk](/build/configure/components/movement-sensor/gps/gps-nmea-rtk-pmtk/) -- [gps-nmea-rtk-serial](/build/configure/components/movement-sensor/gps/gps-nmea-rtk-serial/) +- [gps-nmea](/components/movement-sensor/gps/gps-nmea/) +- [gps-nmea-rtk-pmtk](/components/movement-sensor/gps/gps-nmea-rtk-pmtk/) +- [gps-nmea-rtk-serial](/components/movement-sensor/gps/gps-nmea-rtk-serial/) An example of a `Position` reading: @@ -850,17 +850,17 @@ 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](/build/configure/components/movement-sensor/#supported-models) on your robot. -Then use the movement sensor API's [`GetPosition()`](/build/configure/components/movement-sensor/#getposition) method to get position readings from the sensor. +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 -The following {{< glossary_tooltip term_id="model" text="models" >}} of [movement sensor](/build/configure/components/movement-sensor/) take linear velocity measurements: +The following {{< glossary_tooltip term_id="model" text="models" >}} of [movement sensor](/components/movement-sensor/) take linear velocity measurements: -- [gps-nmea](/build/configure/components/movement-sensor/gps/gps-nmea/) -- [gps-nmea-rtk-pmtk](/build/configure/components/movement-sensor/gps/gps-nmea-rtk-pmtk/) -- [gps-nmea-rtk-serial](/build/configure/components/movement-sensor/gps/gps-nmea-rtk-serial/) -- [wheeled-odometry](/build/configure/components/movement-sensor/wheeled-odometry/) (provides a relative estimate only based on where the base component has started) +- [gps-nmea](/components/movement-sensor/gps/gps-nmea/) +- [gps-nmea-rtk-pmtk](/components/movement-sensor/gps/gps-nmea-rtk-pmtk/) +- [gps-nmea-rtk-serial](/components/movement-sensor/gps/gps-nmea-rtk-serial/) +- [wheeled-odometry](/components/movement-sensor/wheeled-odometry/) (provides a relative estimate only based on where the base component has started) An example of a `Linear Velocity` reading: @@ -871,16 +871,16 @@ 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](/build/configure/components/movement-sensor/#supported-models) on your robot. -Then use the movement sensor API's [`GetLinearVelocity()`](/build/configure/components/movement-sensor/#getlinearvelocity) method to get linear velocity readings from the sensor. +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 -The following {{< glossary_tooltip term_id="model" text="models" >}} of [movement sensor](/build/configure/components/movement-sensor/) take linear acceleration measurements: +The following {{< glossary_tooltip term_id="model" text="models" >}} of [movement sensor](/components/movement-sensor/) take linear acceleration measurements: -- [accel-adxl345](/build/configure/components/movement-sensor/adxl345/) -- [imu-wit](/build/configure/components/movement-sensor/imu/imu-wit/) -- [gyro-mpu6050](/build/configure/components/movement-sensor/mpu6050/) +- [accel-adxl345](/components/movement-sensor/adxl345/) +- [imu-wit](/components/movement-sensor/imu/imu-wit/) +- [gyro-mpu6050](/components/movement-sensor/mpu6050/) An example of a `Linear Acceleration` reading: @@ -891,8 +891,8 @@ linearAcceleration, err := imu.LinearAcceleration(context.Background, nil) You can use linear acceleration readings to determine the rate of change of the [linear velocity](/mobility/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](/build/configure/components/movement-sensor/#supported-models) on your robot. -Then use the movement sensor API's [`GetLinearAcceleration()`](/build/configure/components/movement-sensor/#getlinearacceleration) method to get linear acceleration readings from the sensor. +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/mobility/sensors.md b/docs/mobility/sensors.md index 7b93c5fc11..cc3389c392 100644 --- a/docs/mobility/sensors.md +++ b/docs/mobility/sensors.md @@ -5,20 +5,20 @@ weight: 70 type: "docs" description: "The sensors service provides a central interface for all of your robot's sensors." tags: ["sensor", "services"] -icon: "/build/configure/services/icons/sensor.svg" -images: ["/build/configure/services/icons/sensor.svg"] +icon: "/services/icons/sensor.svg" +images: ["/services/icons/sensor.svg"] aliases: - "/services/sensors/" # SME: Cheuk --- -The sensors service is a built-in service that provides a central interface to all of your robot's [sensors](/build/configure/components/sensor/), regardless of the sensor model. +The sensors service is a built-in service that provides a central interface to all of your robot's [sensors](/components/sensor/), regardless of the sensor model. With it you can obtain readings from multiple sensors on your robot at once. ## Used With {{< cards >}} -{{< relatedcard link="/build/configure/components/sensor/" required="yes" >}} +{{< relatedcard link="/components/sensor/" required="yes" >}} {{< /cards >}} {{% snippet "required-legend.md" %}} diff --git a/docs/mobility/slam/_index.md b/docs/mobility/slam/_index.md index e5177018a7..3306c47667 100644 --- a/docs/mobility/slam/_index.md +++ b/docs/mobility/slam/_index.md @@ -5,7 +5,7 @@ weight: 30 type: "docs" description: "Simultaneous Localization And Mapping (SLAM) allows your robot to create a map of its surroundings and find its location within that map." tags: ["slam", "services"] -icon: "/build/configure/services/icons/slam.svg" +icon: "/services/icons/slam.svg" no_list: true aliases: - "/services/slam/" @@ -29,7 +29,7 @@ You can conduct SLAM with data collected live by a [RPlidar](/registry/examples/ ## Used With {{< cards >}} -{{< relatedcard link="/build/configure/components/camera/" alt_title="RPlidar" required="yes" alt_link="/registry/examples/rplidar/">}} +{{< relatedcard link="/components/camera/" alt_title="RPlidar" required="yes" alt_link="/registry/examples/rplidar/">}} {{< /cards >}} {{% snippet "required-legend.md" %}} @@ -71,7 +71,7 @@ Get the current position of the component the SLAM service is configured to sour **Returns:** - [(Pose)](https://python.viam.dev/autoapi/viam/services/slam/index.html#viam.services.slam.Pose): A `Pose` representing the current position of the component the SLAM service is configured to source point cloud data from. - For example, a [camera](/build/configure/components/camera/) named `"cam"`. + For example, a [camera](/components/camera/) named `"cam"`. For more information, see the [Python SDK Docs](https://python.viam.dev/autoapi/viam/services/slam/client/index.html#viam.services.slam.client.SLAMClient.get_position). @@ -94,7 +94,7 @@ pose = await slam.get_position() - [(spatialmath.Pose)](https://pkg.go.dev/go.viam.com/rdk/spatialmath#Pose): A `Pose` representing the current position of the specified component. - [(string)](https://pkg.go.dev/builtin#string): The `"name"` of the component the SLAM service is configured to source point cloud data from. - For example, a [camera](/build/configure/components/camera/) named `"cam"`. + For example, a [camera](/components/camera/) named `"cam"`. - [(error)](https://pkg.go.dev/builtin#error): An error, if one occurred. For more information, see the [Go SDK Docs](https://pkg.go.dev/go.viam.com/rdk/services/slam). diff --git a/docs/mobility/slam/cartographer/_index.md b/docs/mobility/slam/cartographer/_index.md index 9e7183cfc4..6ab00f2f80 100644 --- a/docs/mobility/slam/cartographer/_index.md +++ b/docs/mobility/slam/cartographer/_index.md @@ -5,7 +5,7 @@ weight: 70 type: "docs" description: "Configure a Simultaneous Localization And Mapping (SLAM) service with the Cartographer modular resource." tags: ["slam", "services"] -icon: "/build/configure/services/icons/slam.svg" +icon: "/services/icons/slam.svg" aliases: - "/services/slam/run-slam-cartographer/" - "/services/slam/cartographer/" diff --git a/docs/mobility/slam/orbslamv3/_index.md b/docs/mobility/slam/orbslamv3/_index.md index f43e516e43..8411b59691 100644 --- a/docs/mobility/slam/orbslamv3/_index.md +++ b/docs/mobility/slam/orbslamv3/_index.md @@ -42,7 +42,7 @@ sudo chmod a+rx /usr/local/bin/orb_grpc_server ### Configuration -How you configure `orbslamv3` depends on whether you want the SLAM service to build your map with data collected live by a [webcam](/build/configure/components/camera/) or with data provided in a dataset at runtime. +How you configure `orbslamv3` depends on whether you want the SLAM service to build your map with data collected live by a [webcam](/components/camera/) or with data provided in a dataset at runtime. Select from the following modes to obtain the correct instructions to configure the service: @@ -51,15 +51,15 @@ Select from the following modes to obtain the correct instructions to configure {{% alert title="REQUIREMENTS" color="note" %}} -Running `orbslamv3` in Live Data mode requires a [webcam](/build/configure/components/camera/). +Running `orbslamv3` in Live Data mode requires a [webcam](/components/camera/). The webcam can be installed on a robot, or just held in your hand. {{% /alert %}} First, follow these instructions to connect and calibrate your webcam as a component of your robot: -1. [Connect and configure a webcam](/build/configure/components/camera/webca/) -2. [Calibrate a camera](/build/configure/components/camera/calibrate/) +1. [Connect and configure a webcam](/components/camera/webca/) +2. [Calibrate a camera](/components/camera/calibrate/) Now, add the `orbslamv3` service: @@ -299,7 +299,7 @@ These are generated at runtime, so there is no need to adjust this folder. | Name | Data Type | Inclusion | Description | | ---- | --------- | --------- | ----------- | | `data_dir` | string | **Required** | Path to the directory used for saving input /data and output /map visualizations. | -| `sensors` | string[] | **Required** | Names of any configured [webcams](/build/configure/components/camera/) providing data to the SLAM service. | +| `sensors` | string[] | **Required** | Names of any configured [webcams](/components/camera/) providing data to the SLAM service. | | `use_live_data` | bool | **Required** |

    Whether to run in Live Data Collection mode.

      `true`: Use data collected live by `sensors`to generate /map.
      `false`: Use a dataset provided in data_dir/data to generate /map.
    | | `map_rate_sec` | int | Optional | Map generation rate for saving current state *(seconds)*.
      Default: `60`.
    | | `data_rate_msec` | int | Optional | Data generation rate for collecting sensor data to feed to SLAM *(milliseconds)*.
      Default: `200`.
    | diff --git a/docs/platform.md b/docs/platform.md index 09603f7213..ab485b396a 100644 --- a/docs/platform.md +++ b/docs/platform.md @@ -1,7 +1,7 @@ --- title: "Platform" linkTitle: "Platform" -weight: 30 +weight: 400 type: docs layout: "empty" empty_node: true diff --git a/docs/registry/_index.md b/docs/registry/_index.md index d57f02a27f..df872e29ed 100644 --- a/docs/registry/_index.md +++ b/docs/registry/_index.md @@ -1,7 +1,7 @@ --- title: "Extend Viam with Modules from the Viam Registry" linkTitle: "Registry" -weight: 33 +weight: 420 type: "docs" tags: [ diff --git a/docs/registry/advanced/_index.md b/docs/registry/advanced/_index.md index 7512ffba81..1b93e23995 100644 --- a/docs/registry/advanced/_index.md +++ b/docs/registry/advanced/_index.md @@ -29,11 +29,11 @@ The [component APIs](/build/program/apis/#component-apis) and [service APIs](/bu If you want to use most of an existing API but need just a few other functions, try using the [`DoCommand`](/build/program/apis/#docommand) endpoint and [extra parameters](/build/program/use-extra-params/) to add custom functionality to an existing subtype. -If your resource does not fit into any of the existing {{< glossary_tooltip term_id="component" text="component" >}} or {{< glossary_tooltip term_id="service" text="service" >}} {{< glossary_tooltip term_id="subtype" text="subtypes" >}} or you want to define different methods for the API, you can use the [generic API](/build/configure/components/generic/) with [`DoCommand`](/build/program/apis/#docommand) or [define a new resource subtype and an API for that subtype](/registry/advanced/create-subtype/). +If your resource does not fit into any of the existing {{< glossary_tooltip term_id="component" text="component" >}} or {{< glossary_tooltip term_id="service" text="service" >}} {{< glossary_tooltip term_id="subtype" text="subtypes" >}} or you want to define different methods for the API, you can use the [generic API](/components/generic/) with [`DoCommand`](/build/program/apis/#docommand) or [define a new resource subtype and an API for that subtype](/registry/advanced/create-subtype/). ## Custom components as remotes -Running {{< glossary_tooltip term_id="modular-resource" text="modular resources" >}} on the [board](/build/configure/components/board/) directly connected to your components is the preferred way of managing and controlling custom components. +Running {{< glossary_tooltip term_id="modular-resource" text="modular resources" >}} on the [board](/components/board/) directly connected to your components is the preferred way of managing and controlling custom components. However, if you are unable to use [modular resources](/registry/) because you need to host `viam-server` on a non-Linux system or have an issue with compilation, you may need to [implement a custom component and register it on a server configured as a remote](/registry/advanced/custom-components-remotes/) on your machine. diff --git a/docs/registry/advanced/create-subtype.md b/docs/registry/advanced/create-subtype.md index 7e75220d0c..92b7ffaded 100644 --- a/docs/registry/advanced/create-subtype.md +++ b/docs/registry/advanced/create-subtype.md @@ -19,7 +19,7 @@ You can define a new {{< glossary_tooltip term_id="resource" text="resource" >}} {{% alert title="Tip" color="tip" %}} If you want to use most of an existing API but need just a few other functions, try using the [`DoCommand`](/build/program/apis/#docommand) endpoint and [extra parameters](/build/program/use-extra-params/) to add custom functionality to an existing subtype. - For example, if you have a [sensor](/build/configure/components/sensor/) and you want to define a `Calibrate` method, you can use `DoCommand`. + For example, if you have a [sensor](/components/sensor/) and you want to define a `Calibrate` method, you can use `DoCommand`. {{% /alert %}} diff --git a/docs/registry/advanced/custom-components-remotes.md b/docs/registry/advanced/custom-components-remotes.md index 94520b1512..239a2cde53 100644 --- a/docs/registry/advanced/custom-components-remotes.md +++ b/docs/registry/advanced/custom-components-remotes.md @@ -12,14 +12,14 @@ aliases: description: "If you are unable to use modular resources, you can implement custom components and register them on a server configured as a remote of your robot." --- -Running {{< glossary_tooltip term_id="modular-resource" text="modular resources" >}} on the [board](/build/configure/components/board/) directly connected to your components is the preferred way of managing and controlling custom components. +Running {{< glossary_tooltip term_id="modular-resource" text="modular resources" >}} on the [board](/components/board/) directly connected to your components is the preferred way of managing and controlling custom components. However, if you are unable to use [modular resources](/registry/) because you need to host `viam-server` on a non-Linux system or have an issue with compilation, you can use a [Viam SDK](/build/program/apis/) to code a custom resource implementation, host it on a server, and add it as a [remote](/build/configure/parts-and-remotes/) of your robot. Once you have coded your custom component and configured the remote servers, you can control and monitor your component with the Viam SDKs, like any other component. To show how to create a custom resource, the following example creates an arm as a custom component and registers the new arm model with a Viam SDK. -Then you can control it as part of your robot with the same [API methods](/build/configure/components/arm/#api) available for [arm models built into the RDK](/build/configure/components/arm/#supported-models). +Then you can control it as part of your robot with the same [API methods](/components/arm/#api) available for [arm models built into the RDK](/components/arm/#supported-models). ## Instructions diff --git a/docs/registry/advanced/mlmodel-design.md b/docs/registry/advanced/mlmodel-design.md index e7e1c0f77a..e7ca98b954 100644 --- a/docs/registry/advanced/mlmodel-design.md +++ b/docs/registry/advanced/mlmodel-design.md @@ -5,7 +5,7 @@ weight: 60 type: "docs" tags: ["data management", "ml", "model training", "vision"] description: "Design your ML Model service to work with Viam's vision services." -icon: "/build/configure/services/icons/ml.svg" +icon: "/services/icons/ml.svg" # SME: Bijan Haney --- diff --git a/docs/registry/configure.md b/docs/registry/configure.md index 818ace3702..1864aef9e3 100644 --- a/docs/registry/configure.md +++ b/docs/registry/configure.md @@ -20,7 +20,7 @@ aliases: - "/modular-resources/configure/" --- -You can extend Viam by adding a module on your robot that provides one or more {{< glossary_tooltip term_id="modular-resource" text="modular resources" >}} ([components](/build/configure/components/) or [services](/build/configure/services/)): +You can extend Viam by adding a module on your robot that provides one or more {{< glossary_tooltip term_id="modular-resource" text="modular resources" >}} ([components](/components/) or [services](/services/)): 1. Add a {{< glossary_tooltip term_id="module" text="module" >}}, either one [from the registry](#add-a-modular-resource-from-the-viam-registry) or a [local module](#local-modules). This makes the modular resource available to the robot. @@ -33,7 +33,7 @@ To add a modular resource from a local module, you must add the module first. The [Viam registry](https://app.viam.com/registry) is a central repository of modules from both Viam and the robotics community that allows you to easily extend Viam's capabilities on your robot. -A module provides one or more {{< glossary_tooltip term_id="resource" text="modular resources" >}} (either a [component](/build/configure/components/) or [service](/build/configure/services/)). +A module provides one or more {{< glossary_tooltip term_id="resource" text="modular resources" >}} (either a [component](/components/) or [service](/services/)). Follow the instructions below depending on the type of modular resource you would like to add to your robot: @@ -42,7 +42,7 @@ Follow the instructions below depending on the type of modular resource you woul ### Add a modular component from the Viam registry -To add a modular [component](/build/configure/components/) from the Viam registry to your robot: +To add a modular [component](/components/) from the Viam registry to your robot: 1. Navigate to the **Config** tab of your robot's page in [the Viam app](https://app.viam.com). 1. Click on the **Components** subtab and click the **Create component** button. @@ -71,7 +71,7 @@ Deleting a module _does not_ delete any configured modular resources it provides ### Add a modular service from the Viam registry -To add a modular [service](/build/configure/services/) from the Viam registry to your robot: +To add a modular [service](/services/) from the Viam registry to your robot: 1. Navigate to the **Config** tab of your robot's page in [the Viam app](https://app.viam.com). 1. Click on the **Services** subtab and click the **Create service** button. @@ -114,7 +114,7 @@ If you prefer to use raw JSON, the following properties are available for modula | `type` | string | **Required** | The {{< glossary_tooltip term_id="subtype" text="subtype">}} of the API (the third part of the {{< glossary_tooltip term_id="api-namespace-triplet" text="API namespace triplet">}}). See [Valid APIs to implement in your model](/registry/create/#valid-apis-to-implement-in-your-model). | | `name` | string | **Required** | What you want to name this instance of your modular resource. | | `model` | string | **Required** | The full {{< glossary_tooltip term_id="model-namespace-triplet" text="model namespace triplet">}} of the modular resource's {{< glossary_tooltip term_id="model" text="model" >}}. | -| `depends_on` | array | Optional | The `name` of components you want to confirm are available on your robot alongside your modular resource. Often a [board](/build/configure/components/board/). Unnecessary if you coded [implicit dependencies](/internals/rdk/#dependency-management). | +| `depends_on` | array | Optional | The `name` of components you want to confirm are available on your robot alongside your modular resource. Often a [board](/components/board/). Unnecessary if you coded [implicit dependencies](/internals/rdk/#dependency-management). | All standard properties for configuration, such as `attributes` and `depends_on`, are also supported for modular resources. The `attributes` available vary depending on your implementation. @@ -187,7 +187,7 @@ Once you have added a modular resource to your robot, you can view and edit the 1. Click on the **Modules** subtab. All modules you have added to your robot appear under the **Deployed** section. -This pane lists the models provided by the module, and any [components](/build/configure/components/) or [services](/build/configure/services/) on your robot that are currently using the module. +This pane lists the models provided by the module, and any [components](/components/) or [services](/services/) on your robot that are currently using the module. You can also configure [how the module updates](#configure-version-update-management-for-a-registry-module) when a new version is available from the Viam registry, or [configure environment variables](#use-environment-variables-with-a-registry-module) for your module. {{}} @@ -355,8 +355,8 @@ To add a local module on your robot: 1. Navigate to the **Config** tab of your robot's page on [the Viam app](https://app.viam.com). - - If you are adding a modular [component](/build/configure/components/), click the **Components** subtab and click **Create component**. - - If you are adding a modular [service](/build/configure/services/), click the **Services** subtab and click **Create service**. + - If you are adding a modular [component](/components/), click the **Components** subtab and click **Create component**. + - If you are adding a modular [service](/services/), click the **Services** subtab and click **Create service**. 1. Then, select the `local component` or `local service` type from the list. @@ -364,7 +364,7 @@ To add a local module on your robot: 1. On the next screen: - - Select the type of modular resource provided by your module, such as a [camera](/build/configure/components/camera/), from the dropdown menu. + - Select the type of modular resource provided by your module, such as a [camera](/components/camera/), from the dropdown menu. - Enter the {{< glossary_tooltip term_id="model-namespace-triplet" text="model namespace triplet">}} of your modular resource's {{< glossary_tooltip term_id="model" text="model" >}}. If you are adding a pre-built modular resource, the model triplet should be provided for you in the module's documentation. - Enter a name for this instance of your modular resource. @@ -443,7 +443,7 @@ The following properties are available for modular resources: | `type` | string | **Required** | The {{< glossary_tooltip term_id="subtype" text="subtype">}} of the API (the third part of the {{< glossary_tooltip term_id="api-namespace-triplet" text="API namespace triplet">}}). See [Valid APIs to implement in your model](/registry/create/#valid-apis-to-implement-in-your-model). | | `name` | string | **Required** | A custom name for this instance of your modular resource. | | `model` | string | **Required** | The full {{< glossary_tooltip term_id="model-namespace-triplet" text="model namespace triplet">}} of the modular resource's {{< glossary_tooltip term_id="model" text="model" >}}. | -| `depends_on` | array | Optional | The `name` of components you want to confirm are available on your robot alongside your modular resource. Often a [board](/build/configure/components/board/). Unnecessary if you coded [implicit dependencies](/internals/rdk/#dependency-management). | +| `depends_on` | array | Optional | The `name` of components you want to confirm are available on your robot alongside your modular resource. Often a [board](/components/board/). Unnecessary if you coded [implicit dependencies](/internals/rdk/#dependency-management). | All standard properties for configuration, such as `attributes` and `depends_on`, are also supported for modular resources. The `attributes` available vary depending on your implementation. @@ -473,7 +473,7 @@ The `attributes` available vary depending on your implementation. The following is an example configuration for a base modular resource implementation. The configuration adds `acme:demo:mybase` as a modular resource from the module `my_base`. The custom model is configured as a component with the name "my-custom-base-1". -You can send commands to the base according to the Viam [base API](/build/configure/components/base/#api): +You can send commands to the base according to the Viam [base API](/components/base/#api): ```json {class="line-numbers linkable-line-numbers"} { diff --git a/docs/registry/create/_index.md b/docs/registry/create/_index.md index f88cf203a5..7bf41cf958 100644 --- a/docs/registry/create/_index.md +++ b/docs/registry/create/_index.md @@ -94,7 +94,7 @@ When implementing a custom {{< glossary_tooltip term_id="model" text="model" >}} - `type`: `component` - `subtype`: any one of [these component proto files](https://github.com/viamrobotics/api/tree/main/proto/viam/component), for example `motor` -When implementing a custom {{< glossary_tooltip term_id="model" text="model" >}} of an existing [service](/build/configure/services/), valid [APIs](/build/program/apis/) always have the following parameters: +When implementing a custom {{< glossary_tooltip term_id="model" text="model" >}} of an existing [service](/services/), valid [APIs](/build/program/apis/) always have the following parameters: - `namespace`: `rdk` - `type`: `service` @@ -102,7 +102,7 @@ When implementing a custom {{< glossary_tooltip term_id="model" text="model" >}} #### Unique cases -If you are using unique hardware that does not already have an [appropriate API](/build/program/apis/#component-apis) defined to support it, you can use the [generic API](/build/configure/components/generic/) to add support for that unique hardware type to your machine. +If you are using unique hardware that does not already have an [appropriate API](/build/program/apis/#component-apis) defined to support it, you can use the [generic API](/components/generic/) to add support for that unique hardware type to your machine. Some use cases may require you to define a new API, or to deploy custom components using a server on a remote part. For more information, see [Advanced Modular Resources](/registry/advanced/). @@ -132,7 +132,7 @@ Your new resource model server must have all the methods that the Viam RDK requi Create a folder for your module and save your code as a file named my_modular_resource.py inside. -The following example module registers a modular resource implementing Viam's built-in [Base API](/build/configure/components/base/#api) (`rdk:service:base`) as a new model, `"mybase"`, using the model family `acme:demo:mybase`. +The following example module registers a modular resource implementing Viam's built-in [Base API](/components/base/#api) (`rdk:service:base`) as a new model, `"mybase"`, using the model family `acme:demo:mybase`.
    Click to view sample code for my_base.py @@ -313,7 +313,7 @@ Your new resource model server must have all the methods that the Viam RDK requi Create a folder for your module and save your code as a file named my_modular_resource.go inside. -The following example module registers a modular resource implementing Viam's built-in [Base API](/build/configure/components/base/#api) (`rdk:service:base`) as a new {{< glossary_tooltip term_id="model" text="model" >}}, `"mybase"`, using the model family `acme:demo:mybase`. +The following example module registers a modular resource implementing Viam's built-in [Base API](/components/base/#api) (`rdk:service:base`) as a new {{< glossary_tooltip term_id="model" text="model" >}}, `"mybase"`, using the model family `acme:demo:mybase`.
    Click to view sample code for mybase.go diff --git a/docs/registry/examples/_index.md b/docs/registry/examples/_index.md index b579f5d8c0..29116f3aa6 100644 --- a/docs/registry/examples/_index.md +++ b/docs/registry/examples/_index.md @@ -33,7 +33,7 @@ Once you have created a modular resource, you can test your modular resource usi {{% card link="/registry/examples/rplidar/" customTitle="Add an RPlidar camera as a Modular Resource" %}} {{% card link="/registry/examples/odrive/" customTitle="Add an ODrive motor as a Modular Resource" %}} {{% card link="/registry/examples/csi/" customTitle="Add a CSI Camera as a Modular Resource" %}} -{{% card link="/build/configure/components/movement-sensor/viam-visual-odometry/" customTitle="Add a Visual Odometry sensor as a Modular Resource" %}} +{{% card link="/components/movement-sensor/viam-visual-odometry/" customTitle="Add a Visual Odometry sensor as a Modular Resource" %}} {{% card link="/registry/examples/custom-arm/" %}} {{% card link="/registry/examples/tflite-module/" customTitle="Add a TensorFlow Lite Modular Service" %}} {{% card link="/registry/examples/triton/" customTitle="Add a Triton MLModel Modular Service" %}} diff --git a/docs/registry/examples/csi.md b/docs/registry/examples/csi.md index 507d820b41..71221a535e 100644 --- a/docs/registry/examples/csi.md +++ b/docs/registry/examples/csi.md @@ -28,7 +28,7 @@ aliases: Many boards, like the Jetson Orin Nano, come with the option to use Camera Serial Interface (CSI) cameras, like [these cameras from E-con Systems](https://www.e-consystems.com/nvidia-jetson-agx-orin-cameras.asp) or [this camera from Seed Technologies](https://www.digikey.com/en/products/detail/seeed-technology-co.,-ltd/114992263/12396924). These cameras are excellent for utilizing embedded vision systems like Viam's [vision service](/ml/vision/). -Not all CSI cameras are supported by the built-in [webcam camera model](/build/configure/components/camera/webcam/). +Not all CSI cameras are supported by the built-in [webcam camera model](/components/camera/webcam/). Instead, Viam supports CSI cameras by providing a {{< glossary_tooltip term_id="modular-resource" text="modular resource" >}} for your CSI camera, `viam:camera:csi`, which you can use to add support for your CSI camera to your robot. This {{< glossary_tooltip term_id="module" text="module" >}} includes a simple wrapper around `GStreamer` and a control interface for the **Control** tab of the [Viam app](https://app.viam.com) so you can utilize the hardware accelerated GST plugins and use the embedded CSI cameras on your `jetson` boards with Viam. diff --git a/docs/registry/examples/custom-arm.md b/docs/registry/examples/custom-arm.md index af1416f9e4..0fe11a2400 100644 --- a/docs/registry/examples/custom-arm.md +++ b/docs/registry/examples/custom-arm.md @@ -22,7 +22,7 @@ aliases: # SMEs: Nicole Jung --- -The {{< glossary_tooltip term_id="rdk" text="RDK" >}} provides a number of built-in arm {{< glossary_tooltip term_id="model" text="models" >}} that implement the API protocol of the [arm](/build/configure/components/arm/) {{< glossary_tooltip term_id="subtype" text="subtype" >}} of component, such as the `ur5e`, `xArm6`, and `xArm7`. +The {{< glossary_tooltip term_id="rdk" text="RDK" >}} provides a number of built-in arm {{< glossary_tooltip term_id="model" text="models" >}} that implement the API protocol of the [arm](/components/arm/) {{< glossary_tooltip term_id="subtype" text="subtype" >}} of component, such as the `ur5e`, `xArm6`, and `xArm7`. {{% alert title="Info" color="info" %}} @@ -33,17 +33,17 @@ 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](/build/configure/components/arm/#supported-models) 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 %}} -If you have a robot arm that is not already supported by the RDK, create a module that provides a customized model for your arm to [program](/build/program/) and control it with the [arm API](/build/configure/components/arm/#api), or use it with [services](/build/configure/services/) like [Motion](/mobility/motion/), just as you would with a built-in model. +If you have a robot arm that is not already supported by the RDK, create a module that provides a customized model for your arm to [program](/build/program/) and control it with the [arm API](/components/arm/#api), or use it with [services](/services/) like [Motion](/mobility/motion/), just as you would with a built-in model. See [Modular Resources](/registry/) for more information. ## Get your arm's kinematics file -The way arms move through space is more complicated than Viam's other [components](/build/configure/components/). +The way arms move through space is more complicated than Viam's other [components](/components/). Because of this, an arm, unlike other components, requires a [kinematic configuration file](/internals/kinematic-chain-config/) describing its geometry. This provides the necessary information for the [frame system service](/mobility/frame-system/) and built-in [motion service](/mobility/motion/) to work with the arm. @@ -88,7 +88,7 @@ Follow [this guide](/registry/create/#code-a-new-resource-model) and select **Go Save the following two files, my_modular_arm.py and \_\_init\_\_.py, on your computer and edit the code as applicable. -This module template registers a modular resource implementing Viam's built-in [Arm API](/build/configure/components/arm/#api) (`rdk:service:arm`) as a new {{< glossary_tooltip term_id="model" text="model" >}}, `"myarm"`: +This module template registers a modular resource implementing Viam's built-in [Arm API](/components/arm/#api) (`rdk:service:arm`) as a new {{< glossary_tooltip term_id="model" text="model" >}}, `"myarm"`: - my_modular_arm.py implements a custom model of the arm component built-in resource, `"myarm"`. diff --git a/docs/registry/examples/odrive.md b/docs/registry/examples/odrive.md index 031d415d57..2cd6e5be99 100644 --- a/docs/registry/examples/odrive.md +++ b/docs/registry/examples/odrive.md @@ -22,7 +22,7 @@ aliases: # SMEs: Kim, Martha, Rand --- -Viam provides an `odrive` {{< glossary_tooltip term_id="modular-resource" text="modular resource" >}} which adds support for ODrive Robotics' [ODrive S1](https://odriverobotics.com/shop/odrive-s1) and [ODrive Pro](https://odriverobotics.com/shop/odrive-pro) motor drivers, extending the Viam [motor API](/build/configure/components/motor/#api). +Viam provides an `odrive` {{< glossary_tooltip term_id="modular-resource" text="modular resource" >}} which adds support for ODrive Robotics' [ODrive S1](https://odriverobotics.com/shop/odrive-s1) and [ODrive Pro](https://odriverobotics.com/shop/odrive-pro) motor drivers, extending the Viam [motor API](/components/motor/#api). The `odrive` {{< glossary_tooltip term_id="module" text="module" >}} supports an ODrive motor driver connected in either `serial` or `canbus` mode. The `odrive` module is available [from the Viam registry](https://app.viam.com/module/viam/odrive). @@ -54,7 +54,7 @@ Your robot must have an ODrive S1 or ODrive Pro motor controller installed to be {{% /alert %}} - Note that `iq_msg_rate_ms` in the `odrive_config_file` defaults to `0`, and you must set this to around `100` to use the [motor API's `SetPower` method](/build/configure/components/motor/#setpower). + Note that `iq_msg_rate_ms` in the `odrive_config_file` defaults to `0`, and you must set this to around `100` to use the [motor API's `SetPower` method](/components/motor/#setpower). 1. Follow [this guide](https://docs.odriverobotics.com/v/latest/control.html#control-doc) to tune your ODrive motor. @@ -62,14 +62,14 @@ Your robot must have an ODrive S1 or ODrive Pro motor controller installed to be {{% alert title="Tip" color="tip" %}} - If you are using a Raspberry Pi as your [board](/build/configure/components/board/), you must run `sudo ip link set can0 up type can bitrate ` in your terminal to receive CAN messages. + If you are using a Raspberry Pi as your [board](/components/board/), you must run `sudo ip link set can0 up type can bitrate ` in your terminal to receive CAN messages. See [Troubleshooting: CAN Link Issues](https://github.com/viamrobotics/odrive#can-link-issues) for more information. Additionally, make sure you have [enabled SPI communication on your Pi](/get-started/installation/prepare/rpi-setup/) to use several common CANHats. {{% /alert %}} -1. Make sure your ODrive is connected to your [board](/build/configure/components/board/) as follows, depending on whether you are using a `serial` or `canbus` connection: +1. Make sure your ODrive is connected to your [board](/components/board/) as follows, depending on whether you are using a `serial` or `canbus` connection: {{< tabs name="Connect your ODrive">}} {{% tab name="Serial" %}} @@ -312,7 +312,7 @@ To add an `odrive_config_file` and reconfigure your ODrive natively each time th See the [ODrive documentation](https://docs.odriverobotics.com/v/latest/odrivetool.html#configuration-backup) for more info. 2. Configure `iq_msg_rate_ms` to a value appropriate for your usage. By default, `iq_msg_rate_ms` is set to `0`. - You must set this to or around `100` to use the [motor API's `SetPower` method](/build/configure/components/motor/#setpower). + You must set this to or around `100` to use the [motor API's `SetPower` method](/components/motor/#setpower). 3. If you add an `odrive_config_file` to a `canbus` motor, you will have to leave the serial connection established with your ODrive plugged in to the USB port, in addition to wiring the CANH and CANL pins. See the [ODrive sample `config.json` file](https://github.com/viamrobotics/odrive/tree/main/sample-configs) for an example of an `odrive_config_file`. diff --git a/docs/registry/examples/rplidar.md b/docs/registry/examples/rplidar.md index 8eb0994822..a1e8c73c8c 100644 --- a/docs/registry/examples/rplidar.md +++ b/docs/registry/examples/rplidar.md @@ -18,7 +18,7 @@ aliases: # SMEs: Kat, Jeremy --- -Viam provides an `rplidar` {{< glossary_tooltip term_id="modular-resource" text="modular resource" >}} which adds support for SLAMTECH's RPlidar family of lidar scanners, extending the Viam [camera API](/build/configure/components/camera/#api). +Viam provides an `rplidar` {{< glossary_tooltip term_id="modular-resource" text="modular resource" >}} which adds support for SLAMTECH's RPlidar family of lidar scanners, extending the Viam [camera API](/components/camera/#api). Currently, the `rplidar` {{< glossary_tooltip term_id="module" text="module" >}} has been tested with the [RPlidar A1](https://www.slamtec.com/en/Lidar/A1), [RPlidar A3](https://www.slamtec.com/en/Lidar/A3), and [RPlidar S1](http://bucket.download.slamtec.com/f19ea8efcc2bb55dbfd5839f1d307e34aa4a6ca0/LD601_SLAMTEC_rplidar_datasheet_S1_v1.4_en.pdf). The `rplidar` module is available [from the Viam registry](https://app.viam.com/module/viam/rplidar). diff --git a/docs/registry/examples/tflite-module.md b/docs/registry/examples/tflite-module.md index 0aa73c87f6..87e9c8b47e 100644 --- a/docs/registry/examples/tflite-module.md +++ b/docs/registry/examples/tflite-module.md @@ -330,7 +330,7 @@ Once you have run the example and examined the module and client code, you might - Write a client similar to `example_audio_classification_client` that generates a different kind of data and provides a suitable TensorFlow Lite model for that data to the `MLModelService` modular resource. For example, you might find a new [pre-trained TensorFlow Lite model](https://www.tensorflow.org/lite/models/trained) that analyzes [speech waveforms](https://tfhub.dev/s?deployment-format=lite&module-type=audio-speech-synthesis) and write a client to provide these waveform samples to the `MLModelService` modular resource and interpret the results returned. - Write a client similar to `example_audio_classification_client` that [trains its own model](/ml/train-model/) on existing or incoming data, as long as that model fulfils the TFLite model constraints. - For example, you might add a [movement sensor](/build/configure/components/movement-sensor/) component to your robot that captures sensor readings to the built-in [data management service](/data/). + For example, you might add a [movement sensor](/components/movement-sensor/) component to your robot that captures sensor readings to the built-in [data management service](/data/). Then you could write a client that trains a new model based on the collected data, provides the model and new sensor data readings to the `MLModelService` modular resource, and interprets the results returned. - Write a module similar to `example_mlmodelservice_tflite` that accepts models for other inference engines besides TensorFlow Lite, then write a client that provides a valid model and source data for that inference engine. diff --git a/docs/registry/examples/triton.md b/docs/registry/examples/triton.md index 9beddf82ca..96e5fc5971 100644 --- a/docs/registry/examples/triton.md +++ b/docs/registry/examples/triton.md @@ -12,7 +12,7 @@ aliases: --- Viam provides a MLModel service resource backed by NVIDIA's [Triton Inference Server](https://developer.nvidia.com/triton-inference-server), open-source software that makes AI model deployment and execution seamless and standardized. -Configure this MLModel service as a {{< glossary_tooltip term_id="modular-resource" text="modular resource" >}} on your robot with a [`jetson` board](/build/configure/components/board/jetson/) to deploy MLModels to your robot faster while consuming less compute power. +Configure this MLModel service as a {{< glossary_tooltip term_id="modular-resource" text="modular resource" >}} on your robot with a [`jetson` board](/components/board/jetson/) to deploy MLModels to your robot faster while consuming less compute power. Usage information is also available on [GitHub](https://github.com/viamrobotics/viam-mlmodelservice-triton). @@ -192,4 +192,4 @@ You can now create a [vision service](/ml/vision/) with a configuration in your } ``` -You can now connect this vision service to a [transform camera](/build/configure/components/camera/transform/), or get detections programmatically through one of Viam's [client SDKs](/build/program/). +You can now connect this vision service to a [transform camera](/components/camera/transform/), or get detections programmatically through one of Viam's [client SDKs](/build/program/). diff --git a/docs/sdks/_index.md b/docs/sdks/_index.md index 5a0ef891b0..96058feb9b 100644 --- a/docs/sdks/_index.md +++ b/docs/sdks/_index.md @@ -1,7 +1,7 @@ --- title: "SDKs" linkTitle: "SDKs" -weight: 75 +weight: 700 type: "docs" description: "Program and control your machines in the languages you already know like Python, Go, TypeScript, C++, and Flutter." no_list: true diff --git a/docs/build/configure/services.md b/docs/services.md similarity index 98% rename from docs/build/configure/services.md rename to docs/services.md index 9b964fb83c..cd5fd895df 100644 --- a/docs/build/configure/services.md +++ b/docs/services.md @@ -1,7 +1,7 @@ --- title: "Services" linkTitle: "Services" -weight: 30 +weight: 600 type: docs description: "Services are built-in software packages that make it easier to add complex capabilities such as motion planning or object detection to your machine." images: ["/general/services.png"] diff --git a/docs/tutorials/_index.md b/docs/tutorials/_index.md index 8c73b9e1a3..36277c07d1 100644 --- a/docs/tutorials/_index.md +++ b/docs/tutorials/_index.md @@ -1,7 +1,7 @@ --- title: "Tutorials" linkTitle: "Tutorials" -weight: 20 +weight: 300 type: docs layout: "tutorials" webmSrc: "/tutorials/videos/scuttle-gamepad-preview.webm" diff --git a/docs/tutorials/configure/build-a-mock-robot.md b/docs/tutorials/configure/build-a-mock-robot.md index 84a615aada..753a6d060b 100644 --- a/docs/tutorials/configure/build-a-mock-robot.md +++ b/docs/tutorials/configure/build-a-mock-robot.md @@ -23,7 +23,7 @@ cost: "0" In this tutorial you will build a mock robot to learn how to configure robots with Viam. You do not need any hardware to do this tutorial. -Follow this tutorial to set up and control a robot with a `fake` [arm](/build/configure/components/arm/fake/), [board](/build/configure/components/board/), and [motor](/build/configure/components/motor/), and an additional mock {{< glossary_tooltip term_id="part" text="sub-part" >}} with a [motor](/build/configure/components/motor/). +Follow this tutorial to set up and control a robot with a `fake` [arm](/components/arm/fake/), [board](/components/board/), and [motor](/components/motor/), and an additional mock {{< glossary_tooltip term_id="part" text="sub-part" >}} with a [motor](/components/motor/). These `fake` components interact with Viam like real hardware but do not physically exist. ## Set up a mock robot @@ -50,13 +50,13 @@ If you were using physical hardware, this process would provide `viam-server` wi For this robot, you configure `viam-server` to use `fake` components that emulate physical hardware. 1. Navigate to the **Config** tab of your mock robot's page in [the Viam app](https://app.viam.com). -2. Configure a [fake board component](/build/configure/components/board/fake/): +2. Configure a [fake board component](/components/board/fake/): - Click on the **Components** subtab and click **Create component**. - Select the `board` type, then select the `fake` model. - Enter the name `myBoard` for your board and click **Create**. -3. Configure a [fake arm component](/build/configure/components/arm/fake/): +3. Configure a [fake arm component](/components/arm/fake/): - Click **Create component**. - Select the `arm` type, then select the `fake` model. @@ -75,7 +75,7 @@ For this robot, you configure `viam-server` to use `fake` components that emulat - Click **Save config**. -4. Configure a [fake motor component](/build/configure/components/motor/fake/): +4. Configure a [fake motor component](/components/motor/fake/): - Click **Create component**. - Select the `motor` type, then select the `fake` model. @@ -304,7 +304,7 @@ func main() { Now when you run this code, you should see the new mock arm positions listed in the command line. Verify that your mock robotic arm is working in the **Control** tab of the [Viam app](https://app.viam.com). -Watch the robotic arm's [`JointPositions()`](/build/configure/components/arm/#jointpositions) changing in real-time along with the code on your development machine. +Watch the robotic arm's [`JointPositions()`](/components/arm/#jointpositions) changing in real-time along with the code on your development machine.
    {{}} @@ -317,8 +317,8 @@ Imagine for the purpose of this tutorial that the `fake` motor we are adding con ### What is a sub-part? -Usually, when building a {{< glossary_tooltip term_id="robot" text="robot" >}}, you pick out a [single-board computer](/build/configure/components/board/) like the [Jetson Nano](/build/configure/components/board/jetson/) or [Raspberry Pi](/build/configure/components/board/pi/). -You follow the instructions in the **Setup** tab to install `viam-server` on your [board](/build/configure/components/board/), and you start operating your robot with that computer, adding the [components](/build/configure/components/) and [services](/build/configure/services/) you want to use to that `viam-server` instance. +Usually, when building a {{< glossary_tooltip term_id="robot" text="robot" >}}, you pick out a [single-board computer](/components/board/) like the [Jetson Nano](/components/board/jetson/) or [Raspberry Pi](/components/board/pi/). +You follow the instructions in the **Setup** tab to install `viam-server` on your [board](/components/board/), and you start operating your robot with that computer, adding the [components](/components/) and [services](/services/) you want to use to that `viam-server` instance. By utilizing {{< glossary_tooltip term_id="part" text="parts" >}}, you can expand upon this, chaining multiple computers together to build a complex robot with Viam: @@ -491,4 +491,4 @@ Run this code to see your mock sub-part's motor toggling between running and idl In this tutorial, we showed you how to set up a mock robot with a sub-part so that you can learn more about using fake components, setting up a local development environment, and writing code using a Viam SDK. -If you're ready to get started with building robots with real hardware components, pick up a [board](/build/configure/components/board/) and try following another [tutorial](/tutorials/). +If you're ready to get started with building robots with real hardware components, pick up a [board](/components/board/) and try following another [tutorial](/tutorials/). diff --git a/docs/tutorials/configure/pet-photographer.md b/docs/tutorials/configure/pet-photographer.md index beb3b0cfd4..5e94a44dfb 100644 --- a/docs/tutorials/configure/pet-photographer.md +++ b/docs/tutorials/configure/pet-photographer.md @@ -24,7 +24,7 @@ weight: 3 If your smart machine [captures](/data/capture/) a lot of data, you might want to filter captured data to selectively store only the data you are interested in. For example, you might want to use your smart machine's camera to capture images based on specific criteria, such as the presence of a certain color, and omit captured images that don't meet that criteria. -In this tutorial, you will use a custom {{< glossary_tooltip term_id="module" text="module" >}} to function as a color filter, and use it with a [camera](/build/configure/components/camera/) to only capture images where your pet is in the frame in the following way: +In this tutorial, you will use a custom {{< glossary_tooltip term_id="module" text="module" >}} to function as a color filter, and use it with a [camera](/components/camera/) to only capture images where your pet is in the frame in the following way: 1. Attach a colored object, such as a blue collar, to your pet. 1. Set up a camera in an area where your pet is likely to appear in the frame, and configure the data management service to capture and sync images from that camera. @@ -33,14 +33,14 @@ In this tutorial, you will use a custom {{< glossary_tooltip term_id="module" te {{}} The source code for this module is available on the [`modular-filter-examples` GitHub repository](https://github.com/viam-labs/modular-filter-examples) . -In addition to the `colorfilter` module used in this tutorial, the example repository also includes a [sensor reading filter](https://github.com/viam-labs/modular-filter-examples/tree/main/sensorfilter) which you could use to control and filter the data recorded by a [sensor component](/build/configure/components/sensor/). +In addition to the `colorfilter` module used in this tutorial, the example repository also includes a [sensor reading filter](https://github.com/viam-labs/modular-filter-examples/tree/main/sensorfilter) which you could use to control and filter the data recorded by a [sensor component](/components/sensor/). ## Hardware requirements To create your own filtering pet photographer robot, you'll need the following hardware: - A computer -- A [webcam](/build/configure/components/camera/webcam/) or other type of [camera](/build/configure/components/camera/) +- A [webcam](/components/camera/webcam/) or other type of [camera](/components/camera/) - A colored object, such as a blue collar for enhanced accuracy _(optional)_ {{< alert title="Tip" color="tip" >}} @@ -338,7 +338,7 @@ After you have implemented your resource subtype's required methods and written {{< tabs >}} {{% tab name="Python"%}} -color_filter.py implements "colorfilter", a custom model of the [camera component API](/build/configure/components/camera/#api). +color_filter.py implements "colorfilter", a custom model of the [camera component API](/components/camera/#api).
    Click to view sample code from color_filter.py @@ -502,7 +502,7 @@ In this code: {{% /tab %}} {{% tab name="Go"%}} -color_filter.go implements "colorfilter", a custom model of the [camera component API](/build/configure/components/camera/#api). +color_filter.go implements "colorfilter", a custom model of the [camera component API](/components/camera/#api).
    Click to view sample code from color_filter.go @@ -823,7 +823,7 @@ Next, add the following services to your smart machine to support the color filt - The [data management service](/data/) enables your smart machine to capture data and sync it to the cloud. - The [vision service](/ml/vision/detection/) enables your smart machine to perform color detection on objects in a camera stream. -If you are filtering data from other components, such as [sensors](/build/configure/components/sensor/), you may need to add different services, such as the [sensors service](/mobility/sensors/) which provides a central interface to all of your robot’s sensors. +If you are filtering data from other components, such as [sensors](/components/sensor/), you may need to add different services, such as the [sensors service](/mobility/sensors/) which provides a central interface to all of your robot’s sensors. ### Add the data management service @@ -920,7 +920,7 @@ With the vision and data management services configured, you can now configure y ### Configure your camera -If you haven't already, add a [camera](/build/configure/components/camera/) component to your smart machine: +If you haven't already, add a [camera](/components/camera/) component to your smart machine: 1. Navigate to your robot's page on the [Viam app](https://app.viam.com/robots) and select the **Config** tab. 1. Click the **Components** subtab and click **Create component** in the lower-left corner. diff --git a/docs/tutorials/configure/scuttlebot.md b/docs/tutorials/configure/scuttlebot.md index 3e501e682a..0686706572 100644 --- a/docs/tutorials/configure/scuttlebot.md +++ b/docs/tutorials/configure/scuttlebot.md @@ -36,7 +36,7 @@ cost: 540 ## Configure the board -Add your first component, the [board](/build/configure/components/board/): +Add your first component, the [board](/components/board/): {{< tabs name="Configure an pi Board" >}} {{% tab name="Config Builder" %}} @@ -260,7 +260,7 @@ If your wheel turns in reverse when it should turn forward, add the `dir_flip` a ## Configure the base -Next, configure the [base component](/build/configure/components/base/), which describes the geometry of your chassis and wheels so that the software can calculate how to steer the rover in a coordinated way. +Next, configure the [base component](/components/base/), which describes the geometry of your chassis and wheels so that the software can calculate how to steer the rover in a coordinated way. Configuring a base component also provides you with a nice UI for moving the rover around. {{< tabs name="Configure a Wheeled Base" >}} @@ -271,7 +271,7 @@ Click on the **Components** subtab and click **Create component**. Select the `base` type, then select the `wheeled` model. Enter a name for your base and click **Create**. -{{< imgproc src="/build/configure/components/base/wheeled-base-ui-config.png" alt="An example configuration for a wheeled base." resize="600x" >}} +{{< imgproc src="/components/base/wheeled-base-ui-config.png" alt="An example configuration for a wheeled base." resize="600x" >}} 1. Select `right` as the **Right Motor** and `left` as the **Left Motor**. 2. Enter `250` in **Wheel Circumference (mm)**. @@ -369,7 +369,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" >}} If you click on the **Video Path** field while your robot is live, a dropdown autopopulates with identified camera paths. @@ -402,7 +402,7 @@ Then toggle the camera view to ON. If everything is configured correctly, 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/example_camera_image.png" alt="Example Camera view inside Viam app" resize="700x" >}} +{{< imgproc src="/components/camera/example_camera_image.png" alt="Example Camera view inside Viam app" resize="700x" >}} ## Next steps diff --git a/docs/tutorials/control/scuttle-gamepad.md b/docs/tutorials/control/scuttle-gamepad.md index cdaedaff62..2362aaf61f 100644 --- a/docs/tutorials/control/scuttle-gamepad.md +++ b/docs/tutorials/control/scuttle-gamepad.md @@ -34,7 +34,7 @@ If your gamepad does not have a dongle, check out [Drive a Yahboom Rover with a You will need the following hardware to complete this tutorial: -- A wheeled rover, configured with a [base component](/build/configure/components/base/) on the [Viam app](https://app.viam.com/). +- A wheeled rover, configured with a [base component](/components/base/) on the [Viam app](https://app.viam.com/). This tutorial uses a [SCUTTLE rover](https://www.scuttlerobot.org/shop/) as an example but you can complete this tutorial using a different rover. - Regardless of the type of base you are using, [Setting up a SCUTTLE with Viam](/tutorials/configure/scuttlebot/) is a good place to start if you haven't already configured your base. - [EasySMX ESM-9101 Wireless Controller](https://www.amazon.com/Wireless-Controller-EasySMX-ESM-9101-Gamepad/dp/B07F1NLGW2?th=1) or a similar gamepad and dongle. @@ -44,7 +44,7 @@ You will need the following hardware to complete this tutorial: ## Set up the hardware -Plug the gamepad Bluetooth dongle into a USB port on the rover's [board](/build/configure/components/board/). +Plug the gamepad Bluetooth dongle into a USB port on the rover's [board](/components/board/). Turn on power to the rover. ## Add the controller to the rover's config @@ -54,7 +54,7 @@ Go to your rover's **Config** tab on the [Viam app](https://app.viam.com/). {{< tabs >}} {{% tab name="Config Builder" %}} -Configure a [gamepad](/build/configure/components/input-controller/gamepad/): +Configure a [gamepad](/components/input-controller/gamepad/): - Click **Create component**. - Select `input_controller` for the component **Type**. @@ -68,7 +68,7 @@ Configure a [gamepad](/build/configure/components/input-controller/gamepad/): {{% tab name="Raw JSON" %}} If instead of using the config builder, you prefer to write raw JSON, switch to [**Raw JSON** mode](/build/configure/#the-config-tab) on the **Config** tab. -Inside the `components` array of your config, add the following configuration for your [gamepad](/build/configure/components/input-controller/gamepad/): +Inside the `components` array of your config, add the following configuration for your [gamepad](/components/input-controller/gamepad/): ```json {class="line-numbers linkable-line-numbers"} { diff --git a/docs/tutorials/control/yahboom-rover.md b/docs/tutorials/control/yahboom-rover.md index ac3c76efe4..0f31302681 100644 --- a/docs/tutorials/control/yahboom-rover.md +++ b/docs/tutorials/control/yahboom-rover.md @@ -32,7 +32,7 @@ To create a new component you'll be working within the **Create Component** sect ![A screenshot of the config builder UI on app.viam.com showing the Create Component box filled out with name=local, type=board and model=pi.](/tutorials/yahboom-rover/config.png) -The first component you will add is the [board](/build/configure/components/board/) which represents the Raspberry Pi to which the other components are wired. +The first component you will add is the [board](/components/board/) which represents the Raspberry Pi to which the other components are wired. For component `Type`, select `board`. Then you can name the `board` whatever you like as long as you are consistent when referring to it later; `local` is a good name since it is the `board` you will communicate with directly. For `Model`, select `pi`. @@ -43,7 +43,7 @@ You don't need to add any attributes for this one, so your configured board will ## Configuring the Motors and Wheels -Since both right side motors of the Yahboom rover are wired together to a single motor driver, the right side motors are configured as a single [motor component](/build/configure/components/motor/) in the Viam config file. +Since both right side motors of the Yahboom rover are wired together to a single motor driver, the right side motors are configured as a single [motor component](/components/motor/) in the Viam config file. Later we will configure both left side motors as another motor. As with all other components, find the **Create Component** box at the bottom of the **Config** tab. @@ -96,7 +96,7 @@ You should now see two motors and be able to make each set of wheels spin. ## Configuring the Base -Unite these wheel sets with a [base component](/build/configure/components/base/), which is used to describe the physical structure onto which your components are mounted. +Unite these wheel sets with a [base component](/components/base/), which is used to describe the physical structure onto which your components are mounted. Configuring a {{% glossary_tooltip term_id="base" text="base"%}} will also give you a nice UI for moving the rover around. In the **Create Component** box, name the component `yahboom-base`. @@ -217,7 +217,7 @@ At this point moving the left analogue stick should result in movement of the ro Before we can do that: this rover has a camera on it which we need to configure. Once again, find the **Create Component** section at the bottom of the **Config** tab. -Follow [these instructions on how to connect and configure a camera](/build/configure/components/camera/webcam/). +Follow [these instructions on how to connect and configure a camera](/components/camera/webcam/). Don't worry about calibrating the camera; it is not necessary for this tutorial. That should be enough to get the `camera` streaming to the webUI. @@ -229,7 +229,7 @@ If you click on your webUI, you will be able to see your camera streaming. ## Configuring the Servo Components -You may have noticed that the camera is mounted on a pair of [servos](/build/configure/components/servo/) which control the pan and tilt of the camera. +You may have noticed that the camera is mounted on a pair of [servos](/components/servo/) which control the pan and tilt of the camera. Go to the **Create Component** section at the bottom of **Config**. Set the `Name` to `pan`, the `Type` to `servo`, the `Model` to `pi`, and click **Create Component**. Set `Depends On` to `local`, and `pin` to `23`, which is the pin the servo is wired to. diff --git a/docs/tutorials/custom/controlling-an-intermode-rover-canbus.md b/docs/tutorials/custom/controlling-an-intermode-rover-canbus.md index 141faf109f..960241562a 100644 --- a/docs/tutorials/custom/controlling-an-intermode-rover-canbus.md +++ b/docs/tutorials/custom/controlling-an-intermode-rover-canbus.md @@ -27,7 +27,7 @@ no_list: true # SME: Matt Vella, Matt Dannenberg, James Otting --- -The Viam platform comes with a component called [base](/build/configure/components/base/), which adds useful abstractions for simplified control of mobile robots. +The Viam platform comes with a component called [base](/components/base/), which adds useful abstractions for simplified control of mobile robots. Instead of controlling individual motors, the base component allows you to [issue commands](https://python.viam.dev/autoapi/viam/components/base/index.html#package-contents) like "move_straight", "spin", "set_velocity" and "stop". Many robotic rovers can be controlled out-of-the-box with the Viam "wheeled" base model - simply by specifying how your motorized wheels are configured. @@ -48,7 +48,7 @@ This tutorial will show how we can both leverage this protocol and abstract it i {{% alert title="Tip" color="tip"%}} Even if you don't have an Intermode rover, many of the other concepts presented here are still relevant to other robotic projects. -While this tutorial can be followed verbatim for the Intermode rover, much of it can be applied to other [base](/build/configure/components/base/), **CAN bus**, or [modular resource](/registry/)-based projects. +While this tutorial can be followed verbatim for the Intermode rover, much of it can be applied to other [base](/components/base/), **CAN bus**, or [modular resource](/registry/)-based projects. {{% /alert %}} The tutorial uses the following hardware: @@ -105,18 +105,18 @@ Check out this [GitHub repository](https://github.com/viam-labs/tutorial-intermo ## A modular resource for the Intermode base Viam includes [APIs](/build/program/apis/) for common component types within `viam-server`. -The Viam component that exposes the interfaces for controlling a mobile robot's movements is the [base component](/build/configure/components/base/). +The Viam component that exposes the interfaces for controlling a mobile robot's movements is the [base component](/components/base/). If you want to learn how to leverage this API to create a custom modular resource using code found in the [tutorial repository](https://github.com/viam-labs/tutorial-intermode), continue reading. If you want to directly configure this modular resource code with your robot, skip to [using the intermode base resource](#use-the-intermode-base-modular-resource) ### Create a custom model using the Viam RDK base API -The [base](/build/configure/components/base/) component exposes an API for controlling a mobile robot’s movements. +The [base](/components/base/) component exposes an API for controlling a mobile robot’s movements. To use it for the Intermode rover, you must create a new {{< glossary_tooltip term_id="model" text="model" >}} with its own implementation of each method. Both the **API** and **model** of any Viam resource are represented as colon-separated triplets where the first element is a namespace. -Since you will conform to an existing Viam API for [base](/build/configure/components/base/), the [API](/registry/create/#valid-apis-to-implement-in-your-model) you will use is: +Since you will conform to an existing Viam API for [base](/components/base/), the [API](/registry/create/#valid-apis-to-implement-in-your-model) you will use is: **rdk:component:base** This base model is being created for tutorial purposes only, and will implement only partial functionality for demonstration purposes. diff --git a/docs/tutorials/custom/custom-base-dog.md b/docs/tutorials/custom/custom-base-dog.md index 81fb0e5359..f1babd051c 100644 --- a/docs/tutorials/custom/custom-base-dog.md +++ b/docs/tutorials/custom/custom-base-dog.md @@ -21,7 +21,7 @@ cost: 190 # SMEs: James Otting, Eric Daniels --- -The [base component type](/build/configure/components/base/) is useful for controlling mobile robots because it gives users intuitive steering controls to use in code as well as from the [Viam app](https://app.viam.com/) remote control interface. +The [base component type](/components/base/) is useful for controlling mobile robots because it gives users intuitive steering controls to use in code as well as from the [Viam app](https://app.viam.com/) remote control interface. Viam natively supports a wheeled base model, but if you have a quadruped or other form of base that requires a different underlying implementation, you can create a custom component as a {{< glossary_tooltip term_id="modular-resource" text="modular resource" >}}. @@ -243,7 +243,7 @@ This is the file you will modify in the next steps. ### Connect the module to the Freenove server -When you send a command to the robot using the Viam [base API](/build/configure/components/base/#api), you need a way to pass the corresponding command to the Freenove dog server. +When you send a command to the robot using the Viam [base API](/components/base/#api), you need a way to pass the corresponding command to the Freenove dog server. In your code, establish a socket and then create a `send_data` helper method to send the command from `viam-server` to the Freenove server. Start by importing socket: @@ -312,7 +312,7 @@ class robotdog(Base, Reconfigurable): To create a custom base model, you need a script that defines what each base component method (for example `set_power`) makes the robot dog do. Open your newly created robotdog.py file. -It contains stubs of all the [base API methods](/build/configure/components/base/#api), but you need to modify these method definitions to actually send commands to the robot dog. +It contains stubs of all the [base API methods](/components/base/#api), but you need to modify these method definitions to actually send commands to the robot dog. Take a look at [robotdog.py](https://github.com/viam-labs/robot-dog-module/blob/main/robotdog/src/robotdog.py). @@ -328,7 +328,7 @@ async def stop(self, extra: Optional[Dict[str, Any]] = None, **kwargs): ``` Copy and paste that code into your robotdog.py file. -Feel free to tweak the specific contents of each of the [base method definitions](/build/configure/components/base/#api) to do things like make the dog move faster. +Feel free to tweak the specific contents of each of the [base method definitions](/components/base/#api) to do things like make the dog move faster. Don't forget to save. ### Make your module executable @@ -360,7 +360,7 @@ Navigate to the **Components** subtab of your robot's **Config** tab. ### Configure the camera -Configure the ribbon camera on the dog as a `webcam` following our [webcam documentation](/build/configure/components/camera/webcam/). +Configure the ribbon camera on the dog as a `webcam` following our [webcam documentation](/components/camera/webcam/). Click **Save config**. @@ -518,5 +518,5 @@ You learned about configuring modules and processes. You drove the robot dog around using the Viam **Control** tab. To add more functionality, try using the generic `do_command` method to add different behaviors to your robot dog. -You could also use the Viam [vision service](/ml/vision/) with the robot dog's [camera component](/build/configure/components/camera/). +You could also use the Viam [vision service](/ml/vision/) with the robot dog's [camera component](/components/camera/). For example, you could write code to tell the robot dog to [move towards a colored target](/tutorials/services/color-detection-scuttle/) or to [follow a colored line](/tutorials/services/webcam-line-follower-robot/), similarly to how these tasks are done with wheeled bases in the tutorials linked here. diff --git a/docs/tutorials/get-started/blink-an-led.md b/docs/tutorials/get-started/blink-an-led.md index 6ece9f2a4d..55168b162a 100644 --- a/docs/tutorials/get-started/blink-an-led.md +++ b/docs/tutorials/get-started/blink-an-led.md @@ -129,7 +129,7 @@ First, go to the [Viam app](https://app.viam.com/) on your web browser and navig {{< tabs >}} {{% tab name="Config Builder" %}} -Add a [_board component_](/build/configure/components/board/) to represent your single-board computer, which in this case is the Raspberry Pi. +Add a [_board component_](/components/board/) to represent your single-board computer, which in this case is the Raspberry Pi. To create the new component, click **Create component** in the lower-left corner of the **Config** tab. - Select `board` as the component type. @@ -297,7 +297,7 @@ go run blink.go ### Write code to blink the LED -In order to interact with the GPIO pins on our Raspberry Pi, you need to import the [board component](/build/configure/components/board/) from the Viam SDK. +In order to interact with the GPIO pins on our Raspberry Pi, you need to import the [board component](/components/board/) from the Viam SDK. The **Code sample** tab automatically adds the board import for you, but it doesn't hurt to double-check. diff --git a/docs/tutorials/get-started/confetti-bot.md b/docs/tutorials/get-started/confetti-bot.md index 070d63bcf4..daaff26c18 100644 --- a/docs/tutorials/get-started/confetti-bot.md +++ b/docs/tutorials/get-started/confetti-bot.md @@ -131,7 +131,7 @@ Then navigate to the robot’s **Config** tab to start configuring your componen Click on the **Components** subtab and click **Create component** in the lower-left corner of the page. Add your {{< glossary_tooltip term_id="board" text="board" >}} with type `board` and model `pi`. -Enter `party` for the name of your [board component](/build/configure/components/board/), then click **Create**. +Enter `party` for the name of your [board component](/components/board/), then click **Create**. You can name your board whatever you want as long as you refer to it the same way in your code; we picked `party` for fun. Your board configuration should now look like this: @@ -142,7 +142,7 @@ Your board configuration should now look like this: Click on the **Components** subtab and click **Create component** in the lower-left corner of the page. Select `motor` for the type and `gpio` for the model. -Enter `start` for the name of your [motor component](/build/configure/components/motor/), then click **Create**. +Enter `start` for the name of your [motor component](/components/motor/), then click **Create**. Again, we named it “start” to refer to the button being pressed, but this name is up to you as long as you remember the name and use the same name in the code later. After clicking **Create**, there is a pin assignment type toggle. diff --git a/docs/tutorials/get-started/lazy-susan.md b/docs/tutorials/get-started/lazy-susan.md index d69073a22e..ae7ef4912f 100644 --- a/docs/tutorials/get-started/lazy-susan.md +++ b/docs/tutorials/get-started/lazy-susan.md @@ -26,7 +26,7 @@ Have you ever dreamed of a spinning device to do this chore? By the end of this tutorial, you will have learned how to wire a motor and motor driver to a Raspberry Pi, install [`viam-server`](/get-started/installation/) on your Raspberry Pi, and how to configure your robot in the Viam app to create your own Lazy Susan for your dinner table! -You will also learn to take your creation a step further and fine-tune the controls of your Lazy Susan using the [Python motor API methods](/build/configure/components/motor/#api). +You will also learn to take your creation a step further and fine-tune the controls of your Lazy Susan using the [Python motor API methods](/components/motor/#api). ## Requirements @@ -114,7 +114,7 @@ Wait a moment until your robot connects to the Viam app. 2. **Configure the motor** - Next, add a [motor component](/build/configure/components/motor/): + Next, add a [motor component](/components/motor/): Navigate to the **Components** subtab and click **Create component** in the lower-left corner. @@ -122,7 +122,7 @@ Wait a moment until your robot connects to the Viam app. Enter `dcmotor` as the name for your motor, then click **Create**. - After creating your motor component, fill in the [required attributes for a gpio motor](/build/configure/components/motor/gpio/): + After creating your motor component, fill in the [required attributes for a gpio motor](/components/motor/gpio/): - For **board**, click the dropdown box and select local (or whatever you named your board!). @@ -280,13 +280,13 @@ Now let's move on to write code to fine tune the control of your motor. It would be nice if the lazy susan rotated slowly so people can grab some food. Head to the Motor API in the [Python SDK documentation](https://python.viam.dev/autoapi/viam/components/motor/index.html). -[SetPower](/build/configure/components/motor/#setpower) adjusts speed by adjusting the power to the motor. +[SetPower](/components/motor/#setpower) adjusts speed by adjusting the power to the motor. This may feel familiar from when you were testing the hardware in the Viam app and adjusted the **Power %** and **Forward** and **Backward** toggle. Instead of using a toggle to adjust the motor direction, you now use either positive or negative numbers up to 100. -Reference the [SetPower API Method example](/build/configure/components/motor/#setpower) for more information. +Reference the [SetPower API Method example](/components/motor/#setpower) for more information. -[GoFor](/build/configure/components/motor/#gofor) allows you to control how fast the motor spins by allowing you to set the revolutions per minute (or RPMs). +[GoFor](/components/motor/#gofor) allows you to control how fast the motor spins by allowing you to set the revolutions per minute (or RPMs). This allows you to have more control over how fast and how long you spin the motor for. If you want to have your motor spin backwards, one of these parameters (not both) needs to be negative. @@ -321,7 +321,7 @@ Because we didn’t set any parameters for how long this will run for, we will n {{}} -However, there is also an API method you can use to [Stop](/build/configure/components/motor/#stop) the motor! +However, there is also an API method you can use to [Stop](/components/motor/#stop) the motor! Add the following import statement at the top of your code: @@ -339,7 +339,7 @@ time.sleep(10) await dc_motor.stop() ``` -If you would like to have the same effect but use even less code, you can use the [GoFor API Method](/build/configure/components/motor/#gofor). +If you would like to have the same effect but use even less code, you can use the [GoFor API Method](/components/motor/#gofor). Remove the code you have just added or comment it out and add the following code instead: ```python @@ -365,9 +365,9 @@ Connect the wood to your motor and decorate it as you wish to make your Lazy Sus This is not where your Lazy Susan project has to end - here are some ideas for adding more components to this project: -- An [input controller component](/build/configure/components/input-controller/) so you can turn and stop the Lazy Susan with a gamepad. -- A [camera component](/build/configure/components/camera/) and an [ML model](/ml/) that recognizes your friends' faces and stops the Lazy Susan precisely where they can reach their favorite food, or takes their photo as it rotates, so you all can have candid memories. -- A [sensor component](/build/configure/components/sensor/), so your Lazy Susan only spins when it detects movement around it. +- An [input controller component](/components/input-controller/) so you can turn and stop the Lazy Susan with a gamepad. +- A [camera component](/components/camera/) and an [ML model](/ml/) that recognizes your friends' faces and stops the Lazy Susan precisely where they can reach their favorite food, or takes their photo as it rotates, so you all can have candid memories. +- A [sensor component](/components/sensor/), so your Lazy Susan only spins when it detects movement around it. Or you can head over to our [Tutorials](/tutorials/) page and try one of our other tutorials to continue building robots. diff --git a/docs/tutorials/get-started/servo-mousemover.md b/docs/tutorials/get-started/servo-mousemover.md index 8d3f474b32..99ae388ef5 100644 --- a/docs/tutorials/get-started/servo-mousemover.md +++ b/docs/tutorials/get-started/servo-mousemover.md @@ -26,7 +26,7 @@ Maybe it was to clear your head, grab your lunch, answer the door, and you get i This tutorial will show you how to build a mouse mover using Viam, a Raspberry Pi, a servo, and an optical mouse. This robot will turn the continuous servo that's secured inside the box, which will turn the circle under the optical mouse. This will keep your computer from falling asleep. -This project is a good place to begin if you're new to robotics and would like to learn how to use a [servo component](/build/configure/components/servo/) with the Viam app and Viam's [Python SDK](https://python.viam.dev/). +This project is a good place to begin if you're new to robotics and would like to learn how to use a [servo component](/components/servo/) with the Viam app and Viam's [Python SDK](https://python.viam.dev/).
    {{}} @@ -154,7 +154,7 @@ Go to the [Viam app](https://app.viam.com), and navigate to the **Config** tab. ### Board component -Create a [board component](/build/configure/components/board/): +Create a [board component](/components/board/): Navigate to the **Components** subtab of your robot's **Config** tab. @@ -169,7 +169,7 @@ You will reference it later. ### Servo component -Create a [servo component](/build/configure/components/servo/): +Create a [servo component](/components/servo/): Click **Create component** in the lower-left corner. diff --git a/docs/tutorials/get-started/try-viam-sdk.md b/docs/tutorials/get-started/try-viam-sdk.md index 939719ff88..3763dc615a 100644 --- a/docs/tutorials/get-started/try-viam-sdk.md +++ b/docs/tutorials/get-started/try-viam-sdk.md @@ -24,7 +24,7 @@ cost: "0" The Viam {{< glossary_tooltip term_id="sdk" text="SDKs" >}} allow you to write code in Python, Go, or TypeScript to control a Viam-connected machine. In this tutorial you will learn how to use the Viam SDKS as you write code to make a robot drive in a square. -You can follow this tutorial with a [rented Viam Rover](https://app.viam.com/try), [your own Viam Rover](/get-started/try-viam/rover-resources/), or another [mobile robot](/build/configure/components/base/). +You can follow this tutorial with a [rented Viam Rover](https://app.viam.com/try), [your own Viam Rover](/get-started/try-viam/rover-resources/), or another [mobile robot](/components/base/).
    {{}} @@ -39,7 +39,7 @@ You can also directly see the [complete code for the tutorial](#complete-code). You don't need any hardware to complete this tutorial! You can rent a rover to drive remotely at no cost with [Try Viam](https://app.viam.com/try). -If you have your own rover on hand, whether it's a [Viam rover](https://www.viam.com/resources/rover) or not, this tutorial works for any wheeled robot that can be configured as a [base component](/build/configure/components/base/wheeled/). +If you have your own rover on hand, whether it's a [Viam rover](https://www.viam.com/resources/rover) or not, this tutorial works for any wheeled robot that can be configured as a [base component](/components/base/wheeled/). {{% alert title="Important" color="note" %}} If you are using your own robot for this tutorial instead of [renting one](https://app.viam.com/try), be sure to [install `viam-server`](/get-started/installation/#install-viam-server) on it and [configure](/build/configure/) its hardware before proceeding with this tutorial. @@ -704,6 +704,6 @@ main().catch((error) => { If you're ready for more, try making your rover move in different ways. Can you make it move in a circle? A figure-eight? -You could also write some code to control the other components on the robot, like the [camera](/build/configure/components/camera/), or the rover's [motors](/build/configure/components/motor/). +You could also write some code to control the other components on the robot, like the [camera](/components/camera/), or the rover's [motors](/components/motor/). You could also control Viam's services, by adding [data management](/data/) to collect data in real time or [vision services](/ml/vision/) to [add color detection to your rover](/tutorials/services/try-viam-color-detection/). diff --git a/docs/tutorials/projects/bedtime-songs-bot.md b/docs/tutorials/projects/bedtime-songs-bot.md index 2672a5595a..6ee1596111 100644 --- a/docs/tutorials/projects/bedtime-songs-bot.md +++ b/docs/tutorials/projects/bedtime-songs-bot.md @@ -68,7 +68,7 @@ In the [Viam app](https://app.viam.com), create a new robot and follow the steps Navigate to your robot's page in the app and click on the [**Config** tab](/build/configure/). -First, add your personal computer's webcam to your robot as a [camera](/build/configure/components/camera/) by creating a new component with **type** `camera` and **model** `webcam`: +First, add your personal computer's webcam to your robot as a [camera](/components/camera/) by creating a new component with **type** `camera` and **model** `webcam`: {{< tabs >}} {{% tab name="Builder UI" %}} @@ -76,7 +76,7 @@ First, add your personal computer's webcam to your robot as a [camera](/build/co Click the **Components** subtab, then click **Create component** in the lower-left corner of the page. Select `camera` for the type, then select `webcam` for the model. -Enter `cam` for the name of your [camera component](/build/configure/components/camera/), then click **Create**. +Enter `cam` for the name of your [camera component](/components/camera/), then click **Create**. ![Creation of a `webcam` camera in the Viam app config builder. The user is selecting the video_path configuration attribute from the dropdown menu](../../tutorials/bedtime-songs-bot/video-path-ui.png) @@ -582,4 +582,4 @@ Now, as shown below, your smart bedtime songs bot knows to play a song whenever This project is just a start. -Expand upon the [configuration](/build/configure/) of your bedtime-songs bot to further customize a robot that can entertain with [machine learning](/ml/), the [vision service](/build/configure/services/), and more [components](/build/configure/components/) and [services](/build/configure/services/). +Expand upon the [configuration](/build/configure/) of your bedtime-songs bot to further customize a robot that can entertain with [machine learning](/ml/), the [vision service](/services/), and more [components](/components/) and [services](/services/). diff --git a/docs/tutorials/projects/build-an-outdoor-rover.md b/docs/tutorials/projects/build-an-outdoor-rover.md index 08cf3cd3f3..5a80df1482 100644 --- a/docs/tutorials/projects/build-an-outdoor-rover.md +++ b/docs/tutorials/projects/build-an-outdoor-rover.md @@ -220,19 +220,19 @@ However, the Viam platform makes it relatively painless. First, let's install [viam-server](/get-started/installation/prepare/rpi-setup/) on your Pi. It should only take a few minutes and once you're done, you are ready to configure your robot. -The Viam platform represents both individual hardware pieces and logical groupings of hardware as [components](/build/configure/components/). -Higher-level control is surfaced with [services](/build/configure/services/). +The Viam platform represents both individual hardware pieces and logical groupings of hardware as [components](/components/). +Higher-level control is surfaced with [services](/services/). For this project, we'll configure: -- One [board](/build/configure/components/board/) component representing our Raspberry Pi -- Two [motor](/build/configure/components/motor/) components -- One [base](/build/configure/components/base/) component, referencing the two motors that make up the base +- One [board](/components/board/) component representing our Raspberry Pi +- Two [motor](/components/motor/) components +- One [base](/components/base/) component, referencing the two motors that make up the base Configuring these components will allow you to control your rover through the internet both manually and programmatically. Later, we can do more interesting things by configuring: -- A [camera](/build/configure/components/camera/) component (optional but recommended) -- A [movement sensor](/build/configure/components/movement-sensor/) component, which in this case represents GPS (optional) +- A [camera](/components/camera/) component (optional but recommended) +- A [movement sensor](/components/movement-sensor/) component, which in this case represents GPS (optional) - A [vision](/ml/vision/) service, which allows us to use machine learning models to detect various things in the robot environment ### Setting up our Boxbot config using the Viam app @@ -253,7 +253,7 @@ Next, create another component of type "motor", model "gpio". Call it "left" to represent the motor on the left side of your rover. Now we'll need to add some attributes. We'll need to reference the board component we created in the last step by name, and the GPIO pins we connected from this motor to our Pi. -Other attributes (Max RPM, PWM Freq) are [important for motor control](/build/configure/components/motor/gpio/#brushless-dc-motor) (Note that these might vary based on your specific hub motors, check the data sheet if you have one; or you can try the ones we use in this tutorial). +Other attributes (Max RPM, PWM Freq) are [important for motor control](/components/motor/gpio/#brushless-dc-motor) (Note that these might vary based on your specific hub motors, check the data sheet if you have one; or you can try the ones we use in this tutorial). Once you've configured the "left" motor, repeat for the "right" - make sure you're mapping the correct GPIO pins for each. Finally, one of the two motors we are connecting will need the "Direction Flip" attribute set to "true". It's ok if you are not sure which one, you can always switch them later after testing. @@ -300,7 +300,7 @@ You can now have some real fun. Try driving your rover by keyboard. Drive your [robot programmatically](/tutorials/get-started/try-viam-sdk/), use a [color detector](/tutorials/services/try-viam-color-detection/) or a [machine learning object detector](/ml/vision/detection/) to interact with the environment. Check out our [Python SDK documentation](https://python.viam.dev/) (or another SDK in the language of your choice) and start planning how you'll use your sturdy outdoor rover to do real things! -Or, expand what your outdoor rover can do by adding a [camera](/build/configure/components/camera/), [movement sensor](/build/configure/components/movement-sensor/), or other [component](/build/configure/components/). +Or, expand what your outdoor rover can do by adding a [camera](/components/camera/), [movement sensor](/components/movement-sensor/), or other [component](/components/).
    {{}} diff --git a/docs/tutorials/projects/claw-game.md b/docs/tutorials/projects/claw-game.md index 22bebc439a..d3e090b42e 100644 --- a/docs/tutorials/projects/claw-game.md +++ b/docs/tutorials/projects/claw-game.md @@ -167,7 +167,7 @@ Navigate to the **Config** tab of your robot's page and select your main part fr Click the **Components** subtab. Click the **Create component** button in the lower-left corner. -Add your [board](/build/configure/components/board/) with type `board` and model `pi`. +Add your [board](/components/board/) with type `board` and model `pi`. Name your board `myBoard` and click **Create**. ![Create component panel, with the name attribute filled as myBoard, type attribute filled as board and model attribute filled as pi.](/tutorials/claw-game/app-component-myboard.png) @@ -214,7 +214,7 @@ Use the parts dropdown menu to navigate to the `planning` sub-part. Click the **Components** subtab. Click the **Create component** button in the lower-left corner. -Add your [arm](/build/configure/components/arm/) with type `arm`, and model `xArm6`. +Add your [arm](/components/arm/) with type `arm`, and model `xArm6`. Name it `myArm` and click **Create**. ![Create component panel, with the name attribute filled as myArm, type attribute filled as arm and model attribute filled as xArm6. In the Attributes section, host is filled 10.1.1.26 and in Frame section, there is a world frame.](/tutorials/claw-game/app-myarm.png) @@ -222,7 +222,7 @@ Name it `myArm` and click **Create**. Configure the arm component with the arm's IP address in the `host` field under **Attributes**. Our arm's address was `10.1.1.26`, but you should use the IP address for your arm. -For more information on xArm6 configuration, see [Configure an xArm6 Arm](/build/configure/components/arm/xarm6/). +For more information on xArm6 configuration, see [Configure an xArm6 Arm](/components/arm/xarm6/). Click **Save config** in the lower-left corner of the screen. @@ -277,7 +277,7 @@ Click **Save config** in the bottom left corner of the screen. {{< tabs >}} {{% tab name="Builder UI" %}} -Click **Create component** and add your [gripper](/build/configure/components/gripper/). +Click **Create component** and add your [gripper](/components/gripper/). Choose type `gripper` and model `fake`. Name it `gripper` and click **Create**. diff --git a/docs/tutorials/projects/foam-dart-launcher.md b/docs/tutorials/projects/foam-dart-launcher.md index e8f32775ec..9a3e1ab69c 100644 --- a/docs/tutorials/projects/foam-dart-launcher.md +++ b/docs/tutorials/projects/foam-dart-launcher.md @@ -40,7 +40,7 @@ If you use a different rover and/or motor controller, ensure that the motor driv For example, a brushed DC motor requires a brushed DC motor driver that is rated for the power requirements of the motor. Also, the configuration files shown in this tutorial _must_ be modified if you use a different setup. -You can find more information on configuring different motors in the [Motor Component](/build/configure/components/motor/) topic. +You can find more information on configuring different motors in the [Motor Component](/components/motor/) topic. {{% /alert %}} ### Hardware and software requirements @@ -52,7 +52,7 @@ You can find more information on configuring different motors in the [Motor Comp - [A solenoid](https://www.amazon.com/0530-Frame-Solenoid-Electromagnet-Stroke/dp/B07K35L4TH/) - [A relay](https://www.amazon.com/HiLetgo-Channel-Isolation-Support-Trigger/dp/B00LW15D1M/) - [A dual motor controller](https://www.amazon.com/Qunqi-Controller-Module-Stepper-Arduino/dp/B014KMHSW6/) - If you use a different motor driver, refer to the manufacturer’s data sheet and our [motor component topic](/build/configure/components/motor/) to learn how to configure the pins. + If you use a different motor driver, refer to the manufacturer’s data sheet and our [motor component topic](/components/motor/) to learn how to configure the pins. - Jumper wires (breadboard wires) ### Tools and Consumables @@ -177,7 +177,7 @@ Navigate to your new robot's **Config** tab and click the **Components** subtab. ### Board Configuration (Raspberry Pi) -Click **Create component** and add your [board](/build/configure/components/board/). +Click **Create component** and add your [board](/components/board/). Choose type `board` and model `pi`. Name it `local` and click **Create**. @@ -190,7 +190,7 @@ Just remember to use that name consistently in the following steps. #### Left Motor -Click **Create component** and add the left [motor](/build/configure/components/motor/) with type `motor` and model `gpio`. +Click **Create component** and add the left [motor](/components/motor/) with type `motor` and model `gpio`. Name it `left` and click **Create**. Select the name of the board the motor controller is wired to (for example, "local") from the **Board** dropdown. @@ -207,7 +207,7 @@ Click **Save config** at the bottom of the screen. #### Right Motor -Click **Create component** and add the right [motor](/build/configure/components/motor/) with type `motor` and model `gpio`. +Click **Create component** and add the right [motor](/components/motor/) with type `motor` and model `gpio`. Name it `right` and click **Create**. Select the name of the board the motor controller is wired to (for example, "local") from the **Board** dropdown. @@ -230,7 +230,7 @@ Let’s add a base to be able to control them together. ### Base Configuration -Configure a [base component](/build/configure/components/base/) to coordinate your motors so you can move the base around with your keyboard. +Configure a [base component](/components/base/) to coordinate your motors so you can move the base around with your keyboard. Click **Create component** and add the base with type `base` and model `wheeled`. Give it a name (you can call it `base`) and click **Create**. @@ -248,7 +248,7 @@ Now let’s add a camera to watch the video stream on the control panel as you m ### Camera Configuration Add your USB camera as a webcam. -Please refer to [our webcam documentation](/build/configure/components/camera/webcam/) for complete instructions. +Please refer to [our webcam documentation](/components/camera/webcam/) for complete instructions. {{}} diff --git a/docs/tutorials/projects/guardian.md b/docs/tutorials/projects/guardian.md index 3cd4322679..c53db81721 100644 --- a/docs/tutorials/projects/guardian.md +++ b/docs/tutorials/projects/guardian.md @@ -23,7 +23,7 @@ In the run up to the new Zelda release, I realized you can build a stationary gu Adding a bit of [machine learning](/ml/), you can then make the guardian detect objects or people or pets and follow them around by rotating its head. Luckily, I am not the first one to have the idea to build a guardian and there was already a [brilliant guardian 3D model](https://www.thingiverse.com/thing:2391826) on Thingiverse with space for LEDs and a servo. -In this tutorial, I will walk you through the steps to build your own functional guardian with a [servo](/build/configure/components/servo/), a [camera](/build/configure/components/camera/), some LEDs and the [ML Model service](/ml/) and [vision service](/ml/vision/). +In this tutorial, I will walk you through the steps to build your own functional guardian with a [servo](/components/servo/), a [camera](/components/camera/), some LEDs and the [ML Model service](/ml/) and [vision service](/ml/vision/). Here's a video of the finished guardian detecting me: {{