- No changes from 5.1.0
Please see the General Release Notes for a description of the API changes included in release 5.1.0.
Clients
-
Fixed a potential segmentation fault when calling
ListServices()on aRobotinstance from multiple threads. Previously, while client creation and client objects were thread-safe, the internal updates to the robot's maps of authorities and endpoints were not. This could result in a crash if two threads calledListServices()concurrently. -
Added
UploadSnapshotsandUploadSnapshotsAsyncmethods to GraphNavClient.
Helper Functions
- Added
EigenFromApiProto(const ::bosdyn::api::SE2Pose&)to proto_math.cpp. This function converts a::bosdyn::api::SE2Poseproto message into anEigen::Isometry2d, constructing the corresponding 2D transformation matrix from the proto's angle and position fields.
There have been no changes in the C++ SDK between 5.0.1.1 and this version.
Please see the General Release Notes for a description of the API changes included in this release.
There have been no changes in the C++ SDK between 5.0.1 and this version.
Please see the General Release Notes for a description of the API changes included in this release.
- Enhanced error handling and client notification for authentication token expiration and directory registration failures in long-running Spot API clients and services has been addressed. This was a long-standing issue that would occur if an API client was unable to refresh its authentication token for an extended period of time (due to e.g., prolonged network connectivity issues, issues with the robot's services), which would result in the token expiring without any clear indication to client code. Since most payload services are intended to run continuously, this would result in silent failures and loss of service functionality. To take advantage of this new functionality, register a error callback on the
Robotclass instance by callingSetTokenRefreshErrorCallbackwith the callback to invoke on error. ForDirectoryRegistrationKeepAliveandPayloadRegistrationKeepAlive, these callbacks are supplied in the constructor.
Please see the General Release Notes for a description of the API changes included in release 5.0.0.
Clients
-
Added NetworkComputeBridgeClient client to support preexisting proto definitions.
-
Added
SetGripperCameraCalib,SetGripperCameraCalibAsync,GetGripperCameraCalib, andGetGripperCameraCalibAsyncmethods to GripperCameraParamClient.
Helper Functions
-
Added a helper function,
NSecToDuration, to time.cpp that simplifies the creation of::google::protobuf::Durationobjects from nanosecond inputs. -
Added two helper functions,
EigenToApiProtoandCreateVec2, proto_math.cpp to streamline the creation of API-compatible math messages.EigenToApiProtoconverts the inputEigen::Quaternionobject to a::bosdyn::api::Quaternionobject.CreateVec2returns a::bosdyn::api::Vec2object based upon the inputxandy.
-
Added two file helper functions,
ParseMessageFromFileWithErrorandWriteMessageToFileWithError, in proto_file.cpp that return an error code to provide specific details about read/write failures, supplementing the existing boolean success indicators. Use the new functions for more granular error handling.
Miscellaneous
- The preprocessor directive responsible for verifying the GNU Compiler Collection (GCC) version now handles environments where
__GNUC__is undefined.
- The joint control example now includes a CMakeLists.txt file, enabling its compilation using the CMake build system for improved ease and correctness.
Please see the General Release Notes for a description of the API deprecations included in release 5.0.0.
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_heightargument in theSafeInflatemethod is now actually used. Previously, thez_heightargument 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
JointCommandmethod to robot_command_builder.cpp -
Added helpers for the Joint Control API to joint_api_helper.cpp.
-
Added
BlockUntilStandCompleteandBlockUntilSE2TrajectoryCompletefunctions to robot_command_helpers.cpp
-
Deprecated
ValidateRequestHeaderAndRespondmethod in common_header_handling.h. Please use the other overload ofValidateRequestHeaderAndRespondgoing forward. -
Deprecated
BlockUntilArmArrivesandBlockUntilGripperArrivesmethods in robot_command_helpers.h. Please use the other overloads ofBlockUntilArmArrivesandBlockUntilGripperArrivesgoing 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_resultsandleg_pair_results - The choreography proto libraries have been deprecated and removed. The protos included in
libbosdyn_choreography_protos.soandlibbosdyn_choreography_protos_static.awill now be included inlibbosdyn_api.soandlibbosdyn_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
GetLiveDatamethod 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
QueryStoredCapturesmethod to enable retrieval of data from the robot using gRPC instead of the/v1/data-buffer/daq-data/endpoint - Added
QueryMaxCaptureIdmethod, which returns the themax_capture_idcorresponding 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_idfield in theQueryParametersmessage accordingly.
Mission Client
- Added
GetInfoAsChunksmethod, which enables the retrieval of static information describing the mission for missions whose size exceeds the maximum message size.
Power Client
- Added
ResetSafetyStopmethod, 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.hto be used with a power client.
SpotCam Compositor Client
- Now sets both the
coords(deprecated in v3.3) andmeterfields for backwards compatibility purposes in the corresponding methods.
Math & Frame Helpers
- The
ExternalStringToInternalStringandInternalStringToExternalStringmethods now returnstd::nulloptif 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
RobotSpecieshas 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_rootmethod asFindTreeRoot - Added a helper function
ReparentFrame
Autowalk Player
- Sets
navigation_idinstead ofroot_idin theSetNodeMapmethod; 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
LoadMissionAsChunks2method to support bidirectional streaming in theLoadMissionAsChunksRPC. - Added
GetMissionAsChunksmethods to support the corresponding RPC.
Robot Command
- Added helper methods in robot_command_builder for using the Spot Arm.
- Added
BodyPosemethod in robot_command_builder for creating aBodyControlParams.BodyPosefrom a single desiredbody_poserelative toframe_name. - Added a set of helper functions in
robot_command_helpers.hto 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
SetIrMeterOverlaymethod with various argument combinations. - Added
GetIrMeterOverlaymethods.
- Added more versions of
- PTZ Client
- Added methods for
GetPtzFocusState,SetPtzFocusStateRPCs.
- Added methods for
- StreamQuality Client
- Added more versions of
SetStreamParamsmethod 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 StringToDataChunksand 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.