C++ is the programming language of choice for commercial robotics deployment and it has always been at the heart of SLAMcore’s software. We develop in C++ because it gives us the low-level control of hardware, processor and memory functions that we need to deliver robust, accurate and real-time visual SLAM. We like to see it as a finer grade of paintbrush that allows us to add the detail critical to effective SLAM. The granular level of control C++ offers allows us to maximize the effective use of low-cost, low-power commercial sensors and processors to create algorithms that work in real-world scenarios. Most commercial robotics firms also use C++ as their core programming language because of the fine level of control and effective resource utilization it provides them
The Robotic Operating System (ROS) has an important role to play as a middleware that makes it easy to get up and running and to experiment with robot prototypes. Which is why, as announced earlier this year, we have extended our support for ROS in our current SDK. We hope that more and more innovative robotics developers will see how quick and easy it is to download, integrate and prove our spatial intelligence algorithms with their prototypes using ROS interfaces.
However, large scale commercial deployments often require more detailed control which only C++ can provide. Efficiency of processing as well as building to specifications that are commercially sound demands the highest level of control possible. In commercial contexts attributes like effective memory management become critical; it is important to manage where and when memory is copied to avoid duplication, wastage and unnecessary resource allocation. For all of its rapid prototyping and development advantages, ROS adds additional resource demands and does not provide the granular efficiency required for commercially viable robot deployments at scale.
New C++ API
So, we are pleased to announce that our latest SDK version (21.04), released in June 2021, includes a new C++ API. These will facilitate the easy integration of SLAMcore algorithms directly into customers’ proprietary software stacks. Exposing our algorithms directly through C++ extends the advantages of the ‘finer-grade brush’ directly into the wider software stack of the robot. The many different subsystems within the robot software stack need to work together to maximize effective utilization of scarce compute and memory resources. Offering a C++ interface to our SLAM system makes it easier to integrate and balance these demands and tune them so that developers can get the best out of limited resources. This efficiency is at the heart of keeping costs down whilst improving performance and making robots commercially viable in at-scale deployments.
SLAMcore has always been focused on democratizing access to SLAM and to catalyzing rapid, cost-effective deployment of robots that can help solve key challenges facing businesses and society. We’ve always written in C++ ourselves because it gives us the greatest control, flexibility and granularity that we need to create the systems that can help developers get their robots to market faster. Most of those creating the robots that are increasingly showing up in the real world and delivering real value and taking on important roles, also use C++ as their core language. It makes sense to create interfaces that help these leaders integrate our algorithms as simply as possible. Ultimately, if entire stacks can run just C++ that will create the greatest efficiencies not only within individual robot designs, but across the development ecosystem itself.
Horses for courses
Wherever you are on your journey as a robot developer you should have easy access to high quality SLAM that can rapidly accelerate your time to value. ROS provides a fast and effective route to prototyping and allows developers to get robot designs up and running as proofs of concept. We will continue to support these through our ROS integrations so that early-stage designs do not have to spend precious time and resource on cracking complex SLAM. As those designs mature and move towards commercial deployment the option of using the SLAMcore C++ API supports the more rigorous, low-level integration often required for production quality deployment at scale. The same algorithms and settings proven and tailored in prototyping can be used as developers move to deployment. Adding this ultra-fine paint brush to our toolkit provides commercial developers with the precision instrument they need to create detailed, effective and versatile designs. To find out more, get in touch.