# March '23 product roundup

Natalia Jacobowitz

Product Manager

The arrival of spring isn’t the only thing our team was excited about in March! From releasing **end-to-end machine learning management** on Viam to collaborating with Simone Giertz on creating [**Chargla**](https://www.youtube.com/watch?v=bmUW0dzQPmY) (an autonomous Tesla charging robot), it’s been a really fun month.

If **ML + robots** caught your attention, we won’t delay—let’s get right into what’s new this past month on Viam.

## New features

### **1\. End-to-end machine learning management**

You can now **train and deploy image classification models using your robots’ image data**—right within Viam! With our data management service, you can manage the [whole process](https://docs.viam.com/manage/data/) of capturing and using data from your robots, including:

- [**Capturing**](https://docs.viam.com/services/data/) and syncing data from your robots to the cloud
- [**Accessing**](https://docs.viam.com/manage/data/view/) and [**exporting**](https://docs.viam.com/manage/data/export/) your data
- Using the image data you’ve captured to [**train**](https://docs.viam.com/manage/ml/train-model/) **image classification models**
- [**Deploying**](https://docs.viam.com/use-cases/deploy-code/) trained classification models to your robots
- [**Uploading**](https://docs.viam.com/manage/ml/upload-model/) and using existing ML models with your robots

Take a look at the whole flow in this video!

[End-to-end Machine Learning Management](https://www.youtube.com/watch?v=a-qGBlwOBuU)

Learn more about training ML models using Viam in our [documentation](https://docs.viam.com/manage/ml/train-model/). Our goal is to make using machine learning in robotics more accessible for folks, and we hope this new feature makes it easier to get started!

### **2\. Motion planning with constraints**

We have added a new ‘ **constraint**’ parameter to the Motion API. This allows you to **apply constraints for how a robot can move**:

- ‘ **linear**’ means that a robot or part needs to move in a straight line
- ‘ **orientation**’ means that a robot should maintain a particular orientation

These settings are useful for programming a robot to write on a whiteboard or hold a cup of water without spilling. The constraint system also allows you to specify that obstacles should only apply to selective frames of a robot.

For example, the end of our [menorah robot](https://www.instagram.com/p/CmfVzOmDs5m/) was able to touch the candles of the menorah to light them, but the candle was considered to be an “obstacle” to the rest of the robot to prevent accidental robot fires.

This new motion planning feature will be on display in Viam’s booth at [ICRA 2023](https://www.icra2023.org/)—stop by to see it in action!

### **3\. Fragments show up in your components and services**

When you add a fragment to your robot configuration, you’ll now **automatically see the added configurations in the Components or Services subtabs** in the builder view mode. This makes it easier to keep track of exactly what you’ve added to your robot as fragments and how it’s configured.

( _Tip:_ A [**fragment**](https://docs.viam.com/try-viam/rover-resources/rover-tutorial-fragments/) in Viam is a reusable configuration block representing a common hardware pattern. Using a fragment makes it easy to manage a fleet of multiple robots configured in the same way.)

## Improvements

### **1\. Sticky GPS keys**

**GPS keys you provide are now saved** to your local storage so that they can be used again when you reload the page, saving you time and hassle when working with GPS data.

### **2\. More reliable camera streams**

If you ever experienced some freezing or flashing with your robots’ camera streams before, that’s now a thing of the past. Our camera stream improvements will make for a more reliable and less glitchy experience. **Camera streams now also automatically restart** if you momentarily lose internet connection. Clear sights ahead!

### **3\. Updates to logs and history**

We’re always a fan of useful logs and history information. We've made some UI updates to **Logs** and **History** so you can now:

- **Load a previous configuration** if you want to revert to changes you made in the past
- **Search your logs** by filtering for specific keywords or types of logs like _info_ or _error_ messages
- **Change your timestamp format** to ISO or Local depending on your preference

## Bug fixes

Here are the bugs we crushed this month:

- Previously, when remotely controlling robots, keyboard inputs sometimes got stuck repeating endlessly—not anymore!
- We tidied up editing robot parts names and seeing code samples for parts.
- For servo components, the remote control slider would sometimes show the angle set to 180°—the slider now accurately reflects the default value of a 0° angle.

And that’s a wrap on March! If you have any questions, feedback, or ideas for features you’d like to see next, definitely let us know on [**Discord**](https://discord.gg/viam). Our community is actively growing and we’d love to hear from you.

We look forward to a season full of robots in bloom with you!
