Skip to content

Commit

Permalink
Release v4.1.1 of Boston Dynamics Spot SDK
Browse files Browse the repository at this point in the history
  • Loading branch information
bd-sdk-publisher committed Dec 18, 2024
1 parent f43b7ec commit 7569b79
Show file tree
Hide file tree
Showing 509 changed files with 1,881 additions and 1,535 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ The SDK consists of:
- [Spot API protocol definition](protos/bosdyn/api/README.md). This reference guide covers the details of the protocol applications used to communicate to Spot. Application developers who wish to use a language other than Python can implement clients that speak the protocol.
- [Spot SDK Repository](https://github.com/boston-dynamics/spot-sdk). The GitHub repo where all of the Spot SDK code is hosted.

This is version 4.1.0 of the SDK. Please review the [Release Notes](docs/release_notes.md) to see what has changed.
This is version 4.1.1 of the SDK. Please review the [Release Notes](docs/release_notes.md) to see what has changed.

## Contents

Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
4.1.0
4.1.1
2 changes: 2 additions & 0 deletions docs/concepts/autonomy/localization.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ This determination is correlated with the amount of change in the environment wh

When site changes cause the localization status to be `STATUS_LOST`, a new map of the site should be recorded.

The lost detector can be adjusted for individual edges in the map or for an entire navigation command by setting the `LostDetectorStrictness` in either the edge `Annotations`, or the `TravelParams` of a command. This adjustment can be used to make the detector more sensitive or more permissive depending on the needs of the application.

## Stuck robots

The GraphNav service uses a system of constraints to keep the robot relatively close to the recorded route (roughly within a 3m corridor).
Expand Down
111 changes: 71 additions & 40 deletions docs/concepts/choreography/custom_gait.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/concepts/data_acquisition_overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ Users can download acquired data using the tablet or any other client through a

## System architecture

The functionality described above is architected in the system as shown in the diagram below. During system initialization, the `Data Acquisition` service aggregates the list of capture capabilities from `Image` services, `NetworkComputeBridge` services (described [here](./network_compute_bridge.md)) and `Data Acquisition Plugin` services. The users configure actions in the tablet as collections of capabilities. The tablet, Scout, an application using the Spot SDK, or the mission service sends acquisition requests to the `Data Acquisition` service to acquire data. The `Data Acquisition` service farms out the acquisition requests to the right `Image` service, `NetworkComputeBridge` service and `Data Acquisition Plugin` service. `Data Acquisition Plugin` services save their captures directly to the `Data Acquisition Store` service through helper functions, while `Image` and `Network Compute Bridge` services send their data back to the `Data Acquisition` service, which is then responsible for storing it to the `Data Acquisition Store` service. The `Data Acquisition Store` service writes the collected data to a database so they are available for download from the `REST` interface, as described [here](./data_buffer_overview.md#data-acquisition-download).
The functionality described above is architected in the system as shown in the diagram below. During system initialization, the `Data Acquisition` service aggregates the list of capture capabilities from `Image` services, `NetworkComputeBridge` services (described [here](./network_compute_bridge.md)) and `Data Acquisition Plugin` services. The users configure actions in the tablet as collections of capabilities. The tablet, Orbit, an application using the Spot SDK, or the mission service sends acquisition requests to the `Data Acquisition` service to acquire data. The `Data Acquisition` service farms out the acquisition requests to the right `Image` service, `NetworkComputeBridge` service and `Data Acquisition Plugin` service. `Data Acquisition Plugin` services save their captures directly to the `Data Acquisition Store` service through helper functions, while `Image` and `Network Compute Bridge` services send their data back to the `Data Acquisition` service, which is then responsible for storing it to the `Data Acquisition Store` service. The `Data Acquisition Store` service writes the collected data to a database so they are available for download from the `REST` interface, as described [here](./data_buffer_overview.md#data-acquisition-download).

![Data Acquisition Architecture](./images/data_acquisition_architecture.png)

Expand Down
2 changes: 1 addition & 1 deletion docs/concepts/data_acquisition_thermal_raw.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ with open(filename, 'rb') as f:
buffer = f.read()
try:
# For .pgm and .raw files transferred from the tablet or downloaded from Scout
# For .pgm and .raw files transferred from the tablet or downloaded from Orbit
processed_data = numpy.frombuffer(buffer, dtype=f'{endianness}u2')
except ValueError:
# For .pgm and .raw files from the SpotCam+IR itself (using the Media Log service)
Expand Down
2 changes: 1 addition & 1 deletion docs/concepts/geometry_and_frames.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ The "body" frame describes the robot's position and orientation, as shown in the

Sensor frames describe the origin of a given sensor and its coordinate axes. The sensor messages from the robot, such as camera images or point clouds, will include the string frame name of the sensor. Sensor frames are commonly used to describe objects that were detected using the sensor.

Objects can also be described using a frame. For example, a fiducial has an origin in the center of the tag, and x,y axes aligning with the tag axes and the z-axis pointing out of the page.
Objects can also be described using a frame. For example, when looking directly at a fiducial, its origin is in the center of the tag, and it has an x-axis that points upwards, a y-axis that points left, and a z-axis that points out of the page.

As the robot moves around in the world, the relationship between the two frames can either stay the same always, or be non-static and dynamically changing. The transformation between an inertial frame and the robot's body frame will change as the robot moves. In contrast, the transformation between the robot's body and the camera frame will not change regardless of whether the robot is moving or not.

Expand Down
2 changes: 1 addition & 1 deletion docs/concepts/network_compute_bridge.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,4 @@ The workers return any processed data through the `output_images` and `other_dat

## Parameterization

Does your service require inputs or parameters? Do you want controls or widgets for those parameters to show up on the SpotApp android application or on Scout? Please refer to [this document](service_customization.md) to learn how to add parameters to a network compute bridge worker.
Does your service require inputs or parameters? Do you want controls or widgets for those parameters to show up on the SpotApp android application or on Orbit? Please refer to [this document](service_customization.md) to learn how to add parameters to a network compute bridge worker.
20 changes: 19 additions & 1 deletion docs/concepts/orbit/about_orbit.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,25 @@ If done correctly, the web view should populate in the "Custom Web Views" button

### Custom WebViews

Developers have the option to host web servers as an orbit extension (ports 21000-22000) that can then be pointed to as a web view. Due to these servers likely not have verified TLS certificates, the user will have to visit the direct URL, `https://ORBIT_IP:PORT/`, of the web server first to get around the privacy error described above.
Developers can create and deploy web applications to Orbit using an Extension. The extension should serve the web application via HTTP on a port in the range 22101-22200. Orbit will proxy HTTPS requests on the port range 22001-22100 to the respective ports in the range 22101-22200. Clients should make requests to the range 22001-22100. `Custom WebViews` can be configured using this URL to present the extension's web application within the Orbit application itself.
Note that the client requests are HTTPS. Orbit will use the same TLS certificate as the Orbit web application when proxying for the extension's web application.
The port mapping is as follows:

| Frontend | Backend |
| -------- | ------- |
| 22001 | 22101 |
| 22002 | 22102 |
| ... | ... |
| 22100 | 22200 |

In production environments, it is recommended to use the following in the `docker-compose.yml` of the Orbit Extension to ensure that the HTTP server is not accessible by external clients:

...
ports:
- "127.0.0.1:<backend_port>:<backend_port>"
...

Extensions can also host web servers as an Orbit extension within the port ranges 21000-22000 that can then be pointed to as a web view, though the user will have to visit the direct URL, `https://ORBIT_IP:PORT/`, of the web server first to get around the privacy error described in the [WebViews](#webviews) section. This port range does not support unencrypted HTTP servers as web views.

#### Note

Expand Down
4 changes: 2 additions & 2 deletions docs/concepts/service_customization.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Spot 3.3 release features a new system for parameterizing 3rd party services. If

- UI on the Tablet application for actions containing parameters (either when recording a mission, or just performing actions in teleoperation).
- UI on the Tablet application for adjusting image parameters when streaming from a 3rd party image source.
- UI on Scout for editing any autowalk action with parameters.
- UI on Orbit for editing any autowalk action with parameters.

The following services support service customization:

Expand Down Expand Up @@ -64,7 +64,7 @@ The bool parameter allows users to turn things on and off. It is defined by the

Region of Interest, or ROI, allows users to specify a region of an image. It is defined by the `RegionOfInterestParam` and `RegionOfInterestParam.Spec` protobuf messages. As of 3.3, ROI params are limited to specifying rectangular regions, and really only work well for `Network Compute Bridge Worker` services. The tablet does not allow setting ROI for `Area Callback` services, but that will likely change in the future. Other services have limited ROI functionality.

Region of interest is helpful to narrow down a search space if there is a lot going on in an image, and the camera can't be moved or zoomed in such a way that only the thing the user care's about is in frame. Users will be able to draw regions on live images using the tablet UI, and on images taken at record time when editing parameters in Scout.
Region of interest is helpful to narrow down a search space if there is a lot going on in an image, and the camera can't be moved or zoomed in such a way that only the thing the user care's about is in frame. Users will be able to draw regions on live images using the tablet UI, and on images taken at record time when editing parameters in Orbit.

### Dictionary

Expand Down
2 changes: 1 addition & 1 deletion docs/concepts/writing_services_for_data_acquisition.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ Lastly, the `quality_percent` may be provided as a parameter for decoding the im

**Note:** The tablet and the on-robot data acquisition service makes requests for JPEG formatted images, so the `image_decode` function must at least be able to respond to a `image_format=image_pb2.Image.FORMAT_JPEG` to ensure that the camera payload can be viewed on the tablet.

**Note:** Does your camera service require inputs or parameters? Do you want controls or widgets for those parameters to show up on the SpotApp android application or on Scout? Please refer to [this document](service_customization.md) to learn how to add parameters to a camera service.
**Note:** Does your camera service require inputs or parameters? Do you want controls or widgets for those parameters to show up on the SpotApp android application or on Orbit? Please refer to [this document](service_customization.md) to learn how to add parameters to a camera service.

### Using Background Capture Threads

Expand Down
2 changes: 1 addition & 1 deletion docs/html/.buildinfo
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 05219855b5c7ab8d8ae99cb9f5342057
config: 8bc2fe0b25485b1c007ecf47933391f4
tags: 645f666f9bcd5a90fca523b33c5a78b7
6 changes: 3 additions & 3 deletions docs/html/README.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />

<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Spot SDK &mdash; Spot 4.1.0 documentation</title>
<title>Spot SDK &mdash; Spot 4.1.1 documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/style.css" type="text/css" />
<link rel="shortcut icon" href="_static/bd-favicon.png"/>
Expand Down Expand Up @@ -37,7 +37,7 @@
<img src="_static/bd-official-white.png" class="logo" alt="Logo"/>
</a>
<div class="version">
4.1.0
4.1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
Expand Down Expand Up @@ -521,7 +521,7 @@ <h1>Spot SDK<a class="headerlink" href="#spot-sdk" title="Permalink to this head
<li><p><a class="reference internal" href="protos/bosdyn/api/README.html"><span class="doc">Spot API protocol definition</span></a>. This reference guide covers the details of the protocol applications used to communicate to Spot. Application developers who wish to use a language other than Python can implement clients that speak the protocol.</p></li>
<li><p><a class="reference external" href="https://github.com/boston-dynamics/spot-sdk">Spot SDK Repository</a>. The GitHub repo where all of the Spot SDK code is hosted.</p></li>
</ul>
<p>This is version 4.1.0 of the SDK. Please review the <a class="reference internal" href="docs/release_notes.html"><span class="doc">Release Notes</span></a> to see what has changed.</p>
<p>This is version 4.1.1 of the SDK. Please review the <a class="reference internal" href="docs/release_notes.html"><span class="doc">Release Notes</span></a> to see what has changed.</p>
<section id="contents">
<h2>Contents<a class="headerlink" href="#contents" title="Permalink to this heading"></a></h2>
<div class="toctree-wrapper compound">
Expand Down
4 changes: 2 additions & 2 deletions docs/html/_modules/bosdyn/bddf/base_data_reader.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>bosdyn.bddf.base_data_reader &mdash; Spot 4.1.0 documentation</title>
<title>bosdyn.bddf.base_data_reader &mdash; Spot 4.1.1 documentation</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/style.css" type="text/css" />
<link rel="shortcut icon" href="../../../_static/bd-favicon.png"/>
Expand Down Expand Up @@ -35,7 +35,7 @@
<img src="../../../_static/bd-official-white.png" class="logo" alt="Logo"/>
</a>
<div class="version">
4.1.0
4.1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
Expand Down
4 changes: 2 additions & 2 deletions docs/html/_modules/bosdyn/bddf/block_writer.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>bosdyn.bddf.block_writer &mdash; Spot 4.1.0 documentation</title>
<title>bosdyn.bddf.block_writer &mdash; Spot 4.1.1 documentation</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/style.css" type="text/css" />
<link rel="shortcut icon" href="../../../_static/bd-favicon.png"/>
Expand Down Expand Up @@ -35,7 +35,7 @@
<img src="../../../_static/bd-official-white.png" class="logo" alt="Logo"/>
</a>
<div class="version">
4.1.0
4.1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
Expand Down
4 changes: 2 additions & 2 deletions docs/html/_modules/bosdyn/bddf/bosdyn.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>bosdyn.bddf.bosdyn &mdash; Spot 4.1.0 documentation</title>
<title>bosdyn.bddf.bosdyn &mdash; Spot 4.1.1 documentation</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/style.css" type="text/css" />
<link rel="shortcut icon" href="../../../_static/bd-favicon.png"/>
Expand Down Expand Up @@ -35,7 +35,7 @@
<img src="../../../_static/bd-official-white.png" class="logo" alt="Logo"/>
</a>
<div class="version">
4.1.0
4.1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
Expand Down
4 changes: 2 additions & 2 deletions docs/html/_modules/bosdyn/bddf/common.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>bosdyn.bddf.common &mdash; Spot 4.1.0 documentation</title>
<title>bosdyn.bddf.common &mdash; Spot 4.1.1 documentation</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/style.css" type="text/css" />
<link rel="shortcut icon" href="../../../_static/bd-favicon.png"/>
Expand Down Expand Up @@ -35,7 +35,7 @@
<img src="../../../_static/bd-official-white.png" class="logo" alt="Logo"/>
</a>
<div class="version">
4.1.0
4.1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
Expand Down
4 changes: 2 additions & 2 deletions docs/html/_modules/bosdyn/bddf/data_reader.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>bosdyn.bddf.data_reader &mdash; Spot 4.1.0 documentation</title>
<title>bosdyn.bddf.data_reader &mdash; Spot 4.1.1 documentation</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/style.css" type="text/css" />
<link rel="shortcut icon" href="../../../_static/bd-favicon.png"/>
Expand Down Expand Up @@ -35,7 +35,7 @@
<img src="../../../_static/bd-official-white.png" class="logo" alt="Logo"/>
</a>
<div class="version">
4.1.0
4.1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
Expand Down
4 changes: 2 additions & 2 deletions docs/html/_modules/bosdyn/bddf/data_writer.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>bosdyn.bddf.data_writer &mdash; Spot 4.1.0 documentation</title>
<title>bosdyn.bddf.data_writer &mdash; Spot 4.1.1 documentation</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/style.css" type="text/css" />
<link rel="shortcut icon" href="../../../_static/bd-favicon.png"/>
Expand Down Expand Up @@ -35,7 +35,7 @@
<img src="../../../_static/bd-official-white.png" class="logo" alt="Logo"/>
</a>
<div class="version">
4.1.0
4.1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
Expand Down
4 changes: 2 additions & 2 deletions docs/html/_modules/bosdyn/bddf/file_indexer.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>bosdyn.bddf.file_indexer &mdash; Spot 4.1.0 documentation</title>
<title>bosdyn.bddf.file_indexer &mdash; Spot 4.1.1 documentation</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/style.css" type="text/css" />
<link rel="shortcut icon" href="../../../_static/bd-favicon.png"/>
Expand Down Expand Up @@ -35,7 +35,7 @@
<img src="../../../_static/bd-official-white.png" class="logo" alt="Logo"/>
</a>
<div class="version">
4.1.0
4.1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
Expand Down
Loading

0 comments on commit 7569b79

Please sign in to comment.