Happy holidays! It’s been a busy few months since we released our public beta.
We’ve been partnering closely with early customers to help them build their robotics businesses and we launched a way to Try Viam with zero setup. We’ve been learning from our growing community and most importantly—rapidly iterating on our platform.
We are constantly investing in and improving Viam. Going forward, you can expect frequent platform updates fully detailed in Release Notes as they are added, and monthly roundups like this one covering highlights.
Check out some of what we added in December!
🚀 Custom Modular Resources: This new feature allows users to implement their own custom components or component models using our Go SDK. We are now working to add support in each of our SDKs so that users can create custom resources in a variety of programming languages.
With custom modular resources, users no longer need to run separate server instances for each custom resource which saves additional network requests.
🚀 URDF Support: Users that are implementing their own arms are now able to supply kinematic information via URDF files. This is a convenience for our users since URDF files are readily available for common hardware
🚀 Secret Management: Users can now manage their secrets with the ability to rotate their location and part secrets, giving robots a new level of security.
🤖 Improved Data Synchronization Reliability:
- We updated how captured data is uploaded from robots to app.viam.com.
- We previously used bidirectional streaming, with the robot streaming sensor readings to the app and the app streaming acknowledgements of progress back to the robot. We switched to a simpler unary approach which is more performant on batched unary calls, is easier to load balance, and maintains ordered captures.
🤖 Usability: we are constantly improving the platform, here are a few parts that got even better:
- Code sample tab: Every robot has a code sample tab which helps you get started using the Viam SDK. We improved it so it's easier to select the language you want to use and provides tools for getting started.
- Configuration: Wheeled bases are now easier to create and edit with the wheeled base model card.
🤖 Motion Planning with Remote Components: We made several improvements to the motion service that make it agnostic to the networking topology of a users 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 on a main or remote Viam server.
🤖 Motion Planning Path Smoothing: Various small improvements to follow the last major development, including:
- Implementation of rudimentary smoothing for RRT* paths, resulting in improvements to path quality for only a very small change in performance.
- Changes to plan manager behavior to perform direct interpolation for any solution within some factor of the best score, instead of only in the case where the best IK solution could be interpolated.
🤖 Improved Camera Performance/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.