The recommended Ubuntu version is now Linux Ubuntu 22.04 LTS (formerly 18.04 LTS). Please see the quickstart for more information.
Please see the General Release Notes for a description of the API changes included in release 4.1.1.
Please see the General Release Notes for a description of the API deprecations included in release 4.1.1.
- Added support for uploading and downloading graphs larger than 4 MB has been added via the UploadGraphStreaming and DownloadGraphStreaming RPCs, respectively. Please see the corresponding client implementation in GraphNavClient.
Please see the General Release Notes for a description of the API changes included in release 4.1.0.
Math & Frame Helpers
-
A new reference frame, "feet_center", has been added. Please see the General Release Notes for more information.
-
The supplied
z_height
argument in theSafeInflate
method is now actually used. Previously, thez_height
argument was not passed to the inner method,Inflate
, and hence defaulted to0.0
, regardless of its value, thereby leading to an incorrect z-coordinate in the returnedSE3Pose
.
Please see the General Release Notes for a description of the API deprecations included in release 4.1.0.
- Updated the basic_robot_command.cpp example to use the RobotCommandFeedback RPC instead of sleeping for an arbitrary amount of time.
No changes from 4.0.2.
Please see the General Release Notes for a description of the API changes included in release 4.0.2.
The Joint Control API allows for low-level control of the robot's joints. Note that this API is experimental and license-limited; the robot must have a Joint Level Control license installed in order for this API to be used. Please see the documentation for more information and supplemental robot information which may be useful for development or simulation of the robot.
Please see the General Release Notes for a description of the API changes included in release 4.0.2.
-
Added RobotCommandStreamingClient client to support corresponding proto additions
-
Added RobotStateStreamingClient client to support corresponding proto additions
-
Added
JointCommand
method to robot_command_builder.cpp -
Added helpers for the Joint Control API to joint_api_helper.cpp.
-
Added
BlockUntilStandComplete
andBlockUntilSE2TrajectoryComplete
functions to robot_command_helpers.cpp
-
Deprecated
ValidateRequestHeaderAndRespond
method in common_header_handling.h. Please use the other overload ofValidateRequestHeaderAndRespond
going forward. -
Deprecated
BlockUntilArmArrives
andBlockUntilGripperArrives
methods in robot_command_helpers.h. Please use the other overloads ofBlockUntilArmArrives
andBlockUntilGripperArrives
going forward.
-
Joint Control: Robot Squat: An example that utilizes the joint control API to move the robot for a robot without an arm attached.
-
Joint Control: Wiggle Arm: An example that utilizes the joint control API to move the robot for a robot with an arm attached.
Please see the General Release Notes for a description of the API changes included in release 4.0.1.
In addition to that, there are no changes in 4.0.1 except the following:
- The VERSION field in the project name has been updated to 4.0.1 from 4.0.0
The following fields and services have been removed.
LogAnnotationService
- Auth application token.
- Robot commands: non-synchronized mobility commands. Top-level feedback messages.
- Graph Nav map edge annotations:
vel_limit
,ground_mu_hint
,grated_floor
- SpotCheck feedback:
foot_height_results
andleg_pair_results
- The choreography proto libraries have been deprecated and removed. The protos included in
libbosdyn_choreography_protos.so
andlibbosdyn_choreography_protos_static.a
will now be included inlibbosdyn_api.so
andlibbosdyn_api_static.a
.
Please see the General Release Notes for a description of the API changes included in release 4.0.0.
The C++ standard in the CMake file has been changed from cxx_std_14 to cxx_std_17.
Clients are now configured with a default 5s keep-alive time, which triggers a faster reconnect with the service, when the network connection goes down.
Lease update change: ignore failed old leases in the case the wallet contains the new lease.
Data Acquisition Client
- Added
GetLiveData
method to allow payloads to publish live data to the robot that is displayed on the tablet and Orbit during teleoperation
Data Acquisition Store Client
- Added
QueryStoredCaptures
method to enable retrieval of data from the robot using gRPC instead of the/v1/data-buffer/daq-data/
endpoint - Added
QueryMaxCaptureId
method, which returns the themax_capture_id
corresponding to the greatest capture ID on the robot; this can be used to exclude preexisting data on the robot from retrieval by setting thecaptures_from_id
field in theQueryParameters
message accordingly.
Mission Client
- Added
GetInfoAsChunks
method, which enables the retrieval of static information describing the mission for missions whose size exceeds the maximum message size.
Power Client
- Added
ResetSafetyStop
method, which enables the primary and redundant safety stops on a Safety-Related Stopping Function (SRSF) configured robot. Robots equipped with this feature will be listed as SRSF "Enabled" under the hardware information section found in the "About" page on the robot's admin console. - Added a set of helper functions in
power_client_helper.h
to be used with a power client.
SpotCam Compositor Client
- Now sets both the
coords
(deprecated in v3.3) andmeter
fields for backwards compatibility purposes in the corresponding methods.
Math & Frame Helpers
- The
ExternalStringToInternalString
andInternalStringToExternalString
methods now returnstd::nullopt
if the frame name does not exist. - The kinematic_state's transforms_snapshot now uses "arm0.link_wr1" instead of "link_wr1" for the name of the frame attached to the SpotArm's wr1 link. This is (1) the name used in the URDF description of the robot and (2) the name used in the image service snapshots. We will continue to publish the kinematic_state's snapshot with the deprecated name in the 4.0 release, but it will be removed in a future release.
- An enum class called
RobotSpecies
has been added. - Two frame names have been added, namely
ecef
(Earth-centered, Earth-fixed) andenu
(East-North-Up), that are used for localization with respect to the Earth. - Renamed
find_tree_root
method asFindTreeRoot
- Added a helper function
ReparentFrame
Autowalk Player
- Sets
navigation_id
instead ofroot_id
in theSetNodeMap
method; the latter is deprecated as of v4.0
Please see the General Release Notes for a description of the API deprecations included in release 4.0.0.
No changes from 3.3.0.
In the upcoming release 4.0, we plan to change the encoding for real-valued fields in local grids to RAW instead of RLE (Run-Length Encoded) and provide client helpers for decoding. Make sure your code handles the encoding
field in LocalGridResponse
correctly.
Added KeepAlive
client (BETA) to support corresponding proto additions.
Added LogStatus
client to support corresponding proto additions.
Added Manipulation API
Client.
Added InverseKinematics
client to support corresponding proto additions.
Please see the General Release Notes for a description of the API changes included in release 3.3.0.
Improved conversion of grpc::StatusCode::UNAVAILABLE
error statuses to SDK error codes in rpc_error_code.cpp
.
Added AutoReturn
client error codes for StartResponse
Status enumeration.
Return errors from converting data chunk to a response in Autowalk
client CompileAutowalk
RPC, instead of returning the more generic GenericSDKError
errors.
Data Chunk
- Reduced chunk size from 4MB to 2MB.
- Added call to reserve the string capacity to avoid the frequent memory reallocations.
Mission Client
- Added
LoadMissionAsChunks2
method to support bidirectional streaming in theLoadMissionAsChunks
RPC. - Added
GetMissionAsChunks
methods to support the corresponding RPC.
Robot Command
- Added helper methods in robot_command_builder for using the Spot Arm.
- Added
BodyPose
method in robot_command_builder for creating aBodyControlParams.BodyPose
from a single desiredbody_pose
relative toframe_name
. - Added a set of helper functions in
robot_command_helpers.h
to be used with a robot command client.
Added ProcessAndInitiateRequestStreamAsyncCall
method in ServiceClient
, which packages a full request message that includes an API RequestHeader
into multiple DataChunk
messages that are streamed directly to the robot via a request-streaming RPC.
Spot CAM Clients
- Compositor Client
- Added more versions of
SetIrMeterOverlay
method with various argument combinations. - Added
GetIrMeterOverlay
methods.
- Added more versions of
- PTZ Client
- Added methods for
GetPtzFocusState
,SetPtzFocusState
RPCs.
- Added methods for
- StreamQuality Client
- Added more versions of
SetStreamParams
method with various argument combinations.
- Added more versions of
Added support for WORLD_OBJECT_STAIRCASE
and WORLD_OBJECT_USER_NOGO
types in WorldObjects
Client.
Added NowSec
and NowTimePoint
methods in common time helper methods.
Added various arm frame names and the stairs base frame names for world objects in common API frames.
Added EigenFromApiProto/EigenToApiProto
, FromRoll/ToRoll
, FromPitch/ToPitch
methods in common proto math helper methods.
Please see the General Release Notes for a description of the API deprecations included in release 3.3.0.
Arm Grasp Carry Overrides: Sets arm grasp state and carry state overrides while moving the arm around.
Arm Manipulation API Walk To Object: Sends a WalkToObjectRayInWorld
command to the robot via the Manipulation API.
Inverse Kinematics Reachability: Shows how to use the Inverse Kinematics Service API to make reachability queries for random arm poses.
Query Autowalk Status: Modified the example to contain a mission_name command line argument. If the mission_name is not specified, the script attempts to guess the mission name.
No changes from 3.2.2 BETA.
Updated Robot
and ClientSDK
classes to enable applications to specify the LeaseWallet
used in instantiated clients.
Added GetSystemLog
methods in HealthClient
.
No changes from 3.2.0.
Enables API clients to specify high level autonomous behaviors for Spot using an easily editable format. The autowalk format is a list of actions and their associated locations. Using this service, users can program the robot to “go to location A, perform action A, go to location B, perform action B, etc.”. The autowalk service compiles the autowalk into a behavior tree that can then be uploaded to the robot and played using the mission service. Previously this feature was only available on the tablet, but now it is a service for all client applications.
Enables users to register a callback that is called in certain areas of the map during navigation. These “Area Callbacks” can instruct the robot to wait until the area is safe to cross (such as a crosswalk), take control of the robot and perform an action (such as opening a door), or perform a background action while in a certain area of the map (such as flashing lights or playing sounds). This enables integration with the Graph Nav navigation system to extend its capabilities in terms of safety and new actions while navigating. See the Area Callback documentation for more details.
Please see the General Release Notes for a description of the API changes included in release 3.2.0.
Added RetryableUnavailableError
RPCErrorCode and RetryableRPCCondition
to check whether a failed RPC should be retried.
Fixed issues in the ConvertGRPCStatus
method that converts grpc:Status to our ::bosdyn::common::Status
.
Added LoadMissionAsChunks
and LoadMissionAsChunksAsync
methods in MissionClient
.
Added FanPowerCommandAsync
and FanPowerCommand
methods in PowerClient
.
Added UpdateSecureChannelPort
in Robot class to update the port used for creating secure channels, instead of using the default 443
Fixed ordering of adding RPC calls to the gRPC completion queue in ServiceClient class to fix a memory leak caused if RPCs are completed right away.
Added InitiateRequestStreamAsyncCallWithChunking
and InitiateRequestResponseStreamAsyncCallWithChunking
helper functions in ServiceClient
class to be used when directly streaming DataChunks.
Added SetupRequestStreamCall
and SetupRequestResponseStreamCall
helper functions in ServiceClient
class that initiates a request stream async call.
Added Is
helper function in Status
class to check if this Status
matches a certain error enum.
Please see the General Release Notes for a description of the API deprecations included in release 3.2.0.
Updated StringToDataChunks
and MessageToDataChunks
method signatures in data_chunking to accept a vector of ::bosdyn::api::DataChunk
instead of a vector of std::unique_ptr<::bosdyn::api::DataChunk>
.
Query Autowalk Status: Example that loads an Autowalk and GraphNav map to the robot from a file. It then queries the status of elements and actions in the walk as the Autowalk mission plays.
No changes from 3.1.0.
No changes from 3.1.0.
Please refer to 3.1.0 section in Python SDK documentation for changes in the protobuf definitions in this release.
Added DataAcquisitionStoreClient for communication with DataAcquisitionStore service.
Added GripperCameraParamClient for communication with new GripperCameraParam service.
Added LicenseClient for communication with License service.
Added IntersectRayPlane
helper function in proto_math.
Added image source name helper functions.
Added world object type helper functions.
Fixed conversions of status enumerations to std::error_code
in the messages ClearGraphResponse
, NavigateToAnchorResponse
, UploadWaypointSnapshotResponse
, UploadGraphResponse
.
Added resize_ratio
argument in BuildImageRequest
function.
No changes from 3.0.2.
Initial Beta release of the Spot C++ SDK.