Changelog
November 2023
Authenticate with location API key
You can now use API keys for authentication. API keys allow you to assign the minimum required permissions for usage. Location secrets, the previous method of authentication, is deprecated and will be removed in a future release.
Queryable sensor data
Once you have added the data management service and synced tabular data, such as sensor readings, to the Viam app, you can now run queries against both captured tabular data as well as its metadata using either SQL or MQL.
For more information, see Query Data with SQL or MQL.
Model training from datasets
To make it easier to iterate while training machine learning models from image data, you now train models from datasets.
Role-based access control
You can now manage users access to robots, locations, and organizations. For more information, see Access Control
October 2023
Test an ML model in browser
After you upload and train a machine learning model, you can test its results in the Data tab.
This allows you to refine models by iteratively tagging more images for training based on observed performance.
For more information, see Test classification models with existing images in the cloud.
To use this update, the classifier must have been trained or uploaded after September 19, 2023. The current version of this feature exclusively supports classification models.
PLC support
The Viam platform now supports the Revolution Pi line of PLCs from KUNBUS in the form of a module. This collaboration allows you to leverage the Raspberry Pi-based Revolution Pi, which runs on Linux and has a specially designed I/O modules for streamlined interaction with industrial controls, eliminating the need for additional components.
Read the Viam PLC Support blog post for a step-by-step guide on using a PLC with Viam.
SLAM map creation
The Cartographer-module now runs in Viam’s cloud for creating or updating maps. This enhancement allows you to:
- Generate larger maps without encountering session timeouts
- Provide IMU input to improve map quality
- Save maps to the SLAM library tab
- Create or update maps using previously captured LiDAR and IMU data
- Deploy maps to machines
September 2023
Modular registry
The Modular Registry enables you to use, create, and share custom modules, extending the capabilities of Viam beyond the components and services that are natively supported.
You can:
- Publish modules on the registry
- Add modules to any machine’s configuration with a few clicks
- Select the desired module version for deployment, make changes at your convenience, and deploy the updates to a single machine or an entire fleet.
Mobile app
You can use a mobile application, available for download now in the Apple and Google Play app stores, to connect to and control your Viam-powered machines directly from your mobile device.
Power sensor component
You now have the capability to use a power sensor component to monitor the voltage, current, and power consumption within your machine’s system.
Filter component’s data before the cloud
Viam has written a module that allows you to filter data based on specific criteria before syncing it to Viam’s cloud. It equips machines to:
- Remove data that is not of interest
- Facilitate high-interval captures while saving data based on your defined metrics
- Prevent the upload of unnecessary data
To learn more, see this tutorial on creating and configuring a data filtration module.
August 2023
Configure a custom Linux board
You can now use boards like the Mediatek Genio 500 Pumpkin that run Linux operating systems with the customlinux
board model.
Image inspection for ML training
This update enables you to get a closer examination of your image and streamline your image annotation experience by making it easier to add bounding boxes and labels in the Data tab.
With the latest improvements, you can now:
- Navigate between images using the arrow keys in the main image view
- Expand images for a more detailed inspection by clicking the expand button on the right image panel
- Move between full-screen images effortlessly with the <> arrow buttons or arrow keys
- Return to the standard view by using the escape key or collapse button
Duplicate component button
You now have the ability to duplicate any config component, service, module, remote, or process.
To use this feature:
- Click on the duplicate component icon at the top right of any resource
- Optionally, you can modify the component name to distinguish it
- Adjust any attributes, such as motor pin numbers
July 2023
Apple SSO authentication
Viam now supports sign-up/log-in through Apple Single Sign-On.
Note that currently, accounts from different SSO providers are treated separately, with no account merging functionality.
Arm component API
Arm models now support the GetKinematics
method in the arm API, allowing you to request and receive kinematic information.
June 2023
View sensor data within Viam
You can now view your sensor data directly in the Viam app to verify data creation and accuracy. If you depend on sensor data to plan and control robot operations, this feature increases access to data and supports a more efficient workflow.
Session management in the Python SDK
The Python SDK now includes sessions, a safety feature that automatically cancels operations if the client loses connection to your robot.
Session management helps you to ensure safer operation of your robot when dealing with actuating controls. Sessions are enabled by default, with the option to disable sessions.
Connect an ODrive motor controller as a Viam module
You can integrate and control ODrive motor controllers with Viam using the odrive
module from the Viam registry.
See the Odrive module readme to learn how to connect and use an ODrive motor controller with Viam, and view the sample configurations.
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 by coding three endpoints of the Arm API:
getJointPositions
movetoJointPositions
GetKinematics
Then, use the motion planning service to specify poses, and Viam handles the rest.
For more information, see this tutorial on creating a custom arm.
Apply a crop transform to camera views
You can now apply a crop 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.
For example, crop a video stream of a busy street to just the sidewalk.
Gantry component
To better control gantries with Viam, you can now:
- Specify speed values when calling the
MovetoPosition
method on Gantry components. 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.
Optimized Viam-trained object detection models
This update for object detection models trained with the machine learning service brings significant improvements, including:
- 76% faster model inference for camera streams
- 64% quicker model training for object detection
- 46% reduction in compressed model size
May 2023
TypeScript SDK beta release
The beta release of the TypeScript SDK allows you to create a web interface to work with your robot, as well as create custom components and services.
Train object detection ML models
You now have the capability to directly train object detection models in addition to image classification models from within the Viam app.
This update allows you to:
- Add labels by drawing bounding boxes around specific objects in your images or a single image.
- Create a curated subset of data for training by filtering images based on labels or tags.
Permissions for organizations in Viam
Now when you invite collaborators to join your organization, you can assign permissions to members by setting one of these roles:
Owner: These members can see and edit every tab on the robot page, as well as manage users in the app. This role is best for those on your team who are actively engineering and building robots.
Operator: These members can only see and use the remote control tab. This role is best for those on your team who are teleoperating or remotely controlling robots.
For more information about assigning permissions and collaborating with others on Viam, see Fleet Management.
Control RoboClaw motor controllers with the driver
When using a RoboClaw motor controller without encoders connected to your motors, you now have more direct control over the RoboClaw’s functionality within Viam or through the motor API.
For example, in the Viam app, you can now set Go For values for these motors, utilizing a time-based estimation for the number of revolutions.
Camera webcam names and setting framerates
The updates to the camera component have improved the process of connecting to and using cameras with your robots.
The latest updates enable you to:
- View readable webcam names in the video path of your camera component.
- Specify your preferred framerate by selecting the desired value in the newly added framerate field on the Config tab.
Additions to code samples in the Viam app
The updated code samples now includes:
- Options for C++ and TypeScript
- The ability to hide or display your robots’ secrets
Access these samples in the Code sample tab on your robot’s page to connect to your robot in various languages.
Delete data in bulk in the Viam app
You can manage the data synced to Viam’s cloud with the new capability for bulk data deletion on the Data tab.
April 2023
Vision service
Important: Breaking Change
The vision service became more modular in RDK v0.2.36, API v0.1.118, and Python SDK v0.2.18.
Find more information on each of the changes below.
Use individual vision service instances
You need to create an individual vision service instance for each detector, classifier, and segmenter model. You can no longer be able to create one vision service and register all of your detectors, classifiers, and segmenters within it.
Add and remove models using the robot config
You must add and remove models using the robot config. You will no longer be able to add or remove models using the SDKs.
Add machine learning vision models to a vision service
The way to add machine learning vision models is changing. You will need to first register the machine learning model file with the ML model service and then add that registered model to a vision service.
March 2023
Machine learning for image classification models
You can now train and deploy image classification models with the data management service and use your robot’s image data directly within Viaml Additionally, you can upload and use existing machine learning models with your robots. For more information on using data synced to the cloud to train machine learning models, read Train a model.
Motion planning with new `constraint` parameter
A new parameter, constraint
, has been added to the Motion service API, allowing you to define restrictions on the robot’s movement.
The constraint system also provides flexibility to specify that obstacles should only impact specific frames of a robot.
Fragments in robot configuration
You can now access fragments in your robot setup. The configurations you added will now show up automatically in the Components or Services subtabs in the Builder view. This makes it easier to monitor what fragments you’ve added to your robot and how they’re configured.
For more information, see Fragments.
Sticky GPS keys
GPS keys you enter are now saved in your local storage. This ensures that when you reload the page, your GPS keys remain accessible.
More reliable camera streams
The camera component’s streams are smoother and more reliable with recent improvements.
Additionally, camera streams automatically restart if you momentarily lose internet connection.
UI updates to Logs and History
The latest UI updates enable you to:
- Load a previous configuration for reverting changes made in the past
- Search logs by filtering keywords or log levels such as info or error messages
- Change your timestamp format to ISO or Local depending on your preference.
February 2023
Rover reuse in Try Viam
You now have the option to reuse a robot config from a previous Try Viam session.
Dynamic code samples
The Viam app Code sample tab now dynamically updates as you add resources to your robot’s config.
The code samples instantiate each resource and include examples of how to call a Get
method on it.
TypeScript SDK
Find more information in the TypeScript SDK docs.
Frame system visualizer
When adding frames to your robot’s config in the Viam app, you can now use the Frame System subtab of the Config tab to more easily visualize the relative positions of frames.
Support for microcontrollers
Micro-RDK is a lightweight version of the RDK that can run on an ESP32. Find more information in the micro-RDK documentation.
January 2023
Remote control power input
On your robot’s Control tab on the Viam app, you can now set the power of a base. The base control UI previously always sent 100% power to the base’s motors.
New encoder model: AMS AS5048
The AMS AS5048 is now supported.
GetLinearAcceleration method
The movement sensor API now includes a GetLinearAcceleration method.
Support for capsule geometry
The motion service now supports capsule geometries.
The UR5 arm model has been improved using this new geometry type.
December 2022
Modular resources
You can now implement your own custom resources as modular resources.
Important: Breaking Change
All users need to update to the latest version of the RDK (V3.0.0) to access robots using the Viam app.
URDF kinematic file support
You can now supply kinematic information using URDF files when implementing your own arm models.
New movement sensor models
There are two new movement sensor models:
Camera performance and reliability
- Improved server-side logic to choose a mime type based on the camera image type, unless a specified mime type is supplied in the request. The default mime type for color cameras is now JPEG, which improves the streaming rate across every SDK.
- Added discoverability when a camera reconnects without changing video paths. This now triggers the camera discovery process, where previously users would need to manually restart the RDK to reconnect to the camera.
Motion planning with remote components
The motion service is now agnostic to the networking topology of a robot.
- Kinematic information is now transferred over the robot API. This means that the motion service is able to get kinematic information for every component on the robot, regardless of whether it is on a main or remote viam-server.
- Arms are now an input to the motion service.
This means that the motion service can plan for a robot that has an arm component regardless of whether the arm is connected to a main or remote instance of
viam-server
.
Motion planning path smoothing
- RRT* paths now undergo rudimentary smoothing, resulting in improvements to path quality with negligible change to planning performance.
- Plan manager now performs direct interpolation for any solution within some factor of the best score, instead of only in the case where the best inverse kinematics solution could be interpolated.
Data synchronization reliability
Previously, data synchronization used bidirectional streaming. Now is uses a simpler unary approach that is more performant on batched unary calls, is easier to load balance, and maintains ordered captures.
November 2022
Camera configuration
Changed the configuration schemes for the following camera models:
- Webcam
- FFmpeg
- Transform
- Join pointclouds
For information on configuring any camera model, see Camera Component.
App code sample tab name update
Changed the name of the Connect tab to Code sample based on user feedback.
New servo model
A new servo model called gpio
supports servos connected to non-Raspberry Pi boards.
RTT indicator in the app
A badge in the Viam app now displays RTT (round trip time) of a request from your client to the robot. Find this indicator of the time to complete one request/response cycle on your robot’s Control tab, in the Operations & Sessions card.
Python 3.8 support
The Python SDK now supports Python 3.8, in addition to 3.9 and 3.10.
New parameter: `extra`
A new API method parameter, extra
, allows you to extend modular-resource functionality by implementing the new field according to whatever logic you choose.
extra
has been added to the following APIs: arm, data management, gripper, input controller, motion, movement sensor, navigation, pose tracker, sensor, SLAM, vision.
IMPORTANT: Breaking change
Users of the Go SDK must update code to specify extra
in the arguments that pass into each request.
extra
is an optional parameter in the Python SDK.
Service dependencies
viam-server
now initializes and configures resources in the correct order.
For example, if the SLAM service depends on a LiDAR, it will always initialize the LiDAR before the SLAM service.
IMPORTANT: Breaking change
If you are using the SLAM service, you now need to specify sensors used by the SLAM service in the depends_on
field of the SLAM configuration.
Other service configurations are not affected.
Width and height fields from camera API
Removed width
and height
from the response of the 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.
Have questions, or want to meet other people working on robots? Join our Community Discord.
If you notice any issues with the documentation, feel free to file an issue or edit this file.
Was this page helpful?
Glad to hear it! If you have any other feedback please let us know:
We're sorry about that. To help us improve, please tell us what we can do better:
Thank you!