contact@blackcoffeerobotics.com
14, Raghava Enclave, Transport Road, Secunderabad, Hyderabad (500009)
©2024 All Rights Reserved by BlackCoffeeRobotics
My first pull into robotics, perhaps like most people was through planning algorithms. Over time as I worked through my early years in research and industry, I got a good understanding and interest in other core robotics concepts such as Mapping, Localization (SLAM), control, and computer vision. As time progressed, I was (am) often tasked with developing, deploying and maintaining software systems for robots with efficiency and scalability in mind. This journey has helped me understand and value some of the lesser emphasized components that go into autonomous robots. This article is a homage to them.
While almost all popular vendors provide ROS/ROS2 interfaces for their sensors, there are still a plethora of issues to overcome.
While there is specific expertise that goes into solving each of the above, but at some level, all of the above involves a good understanding of the Linux Kernel.
In the early stages of development, it is a fairly common practice to manually copy/paste ROS workspace to the robot, and compile and, delete the source files for privacy. This is a poor practice in the long run. Right here comes a need to maintain software versions, and releases and have a streamlined way to push software updates to the robots, this can also be challenging since robots are often in poor network zones.
Containerizing robot code and using CI/CD pipelines from Github/Gitlab are commonly observed practices as the robot deployments scale. Another alternative is the use of AWS services, particularly Robomaker. In my limited experience with AWS Robomaker, I’ve found it to be a mix of several other AWS services, complicated to grasp, and perhaps expensive in operation. Regardless, it is reported to be successfully used by some major robotics companies and is definitely an option to consider if the application and budget permit.
There are several useful reasons to monitor the state of a robot deployed remotely. Sharing robot performance insights and analytics with customers gives them a better picture of their investment. It is also remarkably useful for the developers to access live, and especially recorded data from the robot. Since the development of autonomous robots is rarely finished, there is always another bug to fix, or a new feature to release, use of ROS bags to analyze and improve the system can’t be underplayed.
Telemetry from the robot can be of two forms,
While core robotics concepts like SLAM/Planning/Control would largely remain unchanged across a range of robots, the actual mission statement for each of them is quite different. For example, an AMR in a given factory environment could be tasked with a set of 100 start-goal pairs in advance and execute them serially. In another setting, such tasks could be generated at run-time with instructions to charge batteries if no task is provided. In such a simple scenario presented, the fundamental principles that enable the robot to move autonomously remain unchanged but the software itself must be different.
These differences can be further magnified if the underlying industries the AMR is serving keep varying. A plant process for packaging water bottles for example would be remarkably different from sorting parcels, which would, in turn, be remarkably different from machining an engine part. While the core navigation stack remains unchanged across these applications, the state and task management by the robot’s decision-making engine keep changing. Developers often use tools like state machines, or behavior trees to achieve the desired outcome for a given application.
In this article, I highlighted some of the lesser discussed software components that go into making a deployable autonomous robot. No doubt the fundamental concepts and superior algorithms affect the performance of a robotics system but in absence of adept engineering, it will at best be a research prototype.