Our Head of Robotics Stephen Hansen does a quick demo overview of Freedom Robotics Link ROS: Cloud Logging for ROS 1 and ROS 2
As robotics engineers, we spend a LOT of time debugging... especially for complex robots based on ROS 1 or 2.
We always start simple, maybe by writing a beautiful piece of code that works on its own, but that then gets layered on hardware, combined with sensors that break and generate data at different moments. It then communicates with 7 different APIs and runs off three different power-efficient compute platforms. By the end of it all, we’ve spent most of our time piecing things together, patching dependencies, looking through poorly written documentation, and way too little time on actual development. Once we’ve figured out what was wrong (if it doesn’t go away on its own), it generally ends up being one of those “d’oh” moments.
While debugging will continue to be a fact of life, my team realized that we can speed up tracking down what’s wrong by an order of magnitude by using the right tools. Simple things such as proper visualization and introspection, without even having to plug in a monitor and keyboard to your robot’s computer, can be a flat-out lifesaver. We are excited to bring back the fun to the challenge of figuring out what’s wrong with your robot. We call it Link ROS - designed to enable Cloud Logging for ROS 1 and 2. If you want to try this now, you can sign up for free and get your first robot going
Easy access to your robot’s data on the cloud enables you to more effectively access, visualize and share all the data from your ROS robots - from sensors to ros_out to cpu and resource metrics.
Current Logging and Visualization is Painful
ROS developers often have to consider many different reasons why a bug might be happening. Algorithms are built upon several layers of code and it’s not obvious where the root cause of the issue might be found. Once the bug has been isolated, it’s generally pretty straightforward to see what’s causing it. The real challenge lies in getting to that point of bug isolation. Here are some of the more typical debugging challenges we all know too well:
- You need to plug in a monitor, mouse, and keyboard to recreate the scenario and see the data
- Or you’re ssh’ed in and now you can’t just plot data from a topic or check an image to see what’s actually happening because you only have the terminal
- You’re not on the same network as your robot and you set up TeamViewer or VNC to look at what’s going on, but the connection is slow enough to be infuriating, or you’re stuck because of some login screen or firewall.
- You go back and forth between recreating the bug and looking at the data. You realize that you should’ve been echo’ing another topic but you forgot to run that and have to start over.
- You tinker with the axes on rqt_image_view and spend 5 minutes figuring out how to get all the graphs plotting and getting the scale right. Then your peer asks for an entirely different graph and you start over.
- Where did I put that rosbag again? Where did I save the data? test12_map94_Final2.bag? What actually happened during this time?
We Love ROS
We use ROS and the tools surrounding it every day and realized through thousands of hours of optimization, tuning, and running robots that someone needed to build logging and visualization tools once - and do it well. This tool needed to work with ROS topics and convert raw messages effortlessly into useful visualizations. Once a bug was recreated and saved, we needed to be able to zoom in on that particular moment in time and look at any piece of data so that we wouldn’t have to reproduce it again. It had to work from anywhere with an internet connection, and we wanted to be able to edit code and poke at the system to fix the bug.
Link ROS monitors your full stack, including CPU, resources, topic details and network bandwidth. This enables you to identify underlying issues with the robot's performance which may impact your ROS code's success. You can also review historical data correlated against what happened and fix it.
Enter Link ROS
This is why we built Link ROS, a secure, lightweight service running in the background on your robots (any robot: ROS1, ROS2, or even non-ROS) that listens to your topics and streams the data through any network setup like WiFi, ethernet, or LTE, where Link ROS optimizes bandwidth utilization by switching to a peer-to-peer network connection when possible.
How Link ROS Works
Once Link ROS is connected, it retrieves your ROS messages, CPU, memory usage, bandwidth, and other data helping you debug the problem beyond just ROS data. All of this data is stored in the cloud, making it available for later introspection. The way Link ROS works is that it watches for ROS to load and then introspects all the available ROS topics, identifies which ones you want to monitor and listens for messages. These are then buffered and synchronized to the cloud at a filterable rate (maybe you don’t need battery voltage at 120 Hz) and made accessible to the Freedom API to be viewed via the Freedom Robotics web app or consumed by your own product through the API.
We decided early on that the web app shouldn’t be the only way to retrieve the data, but we also wanted data visualization to be intuitive and easy to use. It allows overlaying different data sources in one place while also giving the ability to check the raw data and choose from multiple visualizations for each topic (latest data, graphs, 3D, custom, etc.). Common ROS data messages are beautifully visualized allowing the developer to waste no time getting to the root cause.
Powerful dashboards for easy troubleshooting and debugging.
You can also click “Share” on the bottom right of the page and send a full-stack robot replay to any of your co-workers. Here’s a replay of a robot not finding its charger and getting lost until its battery died. Here’s another replay of an autonomous car driving around the Bay Area.
When can I use this?
Link ROS is live and ready to work with your robot right now. It’s a one line install on ROS systems and takes less than 5 minutes to set up and try. We’re eager to see what the community does with it and would love to hear in what ways it’s being used.