@eshu Great article! Enjoyed reading the exposition.
I’d like to share some thoughts:
What do you think the industry’s biggest remaining challenges are?
Currently, the biggest challenge to me is still the same that has been since dare I say the beginning of in the field robotics: Grad student or even professor has a robotics idea and wants to implement it on hardware. They may be intimate with the theory but lack good software engineering practices and more importantly good low level programming skills to realize their theory on hardware. Having ROS language bindings for higher level languages like Python is amazing however, Python is much slower than C/C++ and many times this can show up as a problem in implementation when working on high frequency control such as Adaptive Control. Not to mention C/C++ can be a bit of a pain and have their own learning curve. Just because I can write in C/C++ does not mean I will be using it effectively it and be writing optimized C++ code.
I would like to see the industry/community spend more time on creating bindings for languages like Rust (there is a current working group for it) which make low level coding more approachable than C++. In terms of a higher level language, utilizing Julia would be a god send to many prototypers transitioning to actual hardware implementation. Julia is a high level language like Python, but is JIT compiled and provides performance comparable to C. Having a ROS language binding for Julia will make ROS so much more approachable to theory/academic oriented folks while making hardware realizable with C level performant code.
Hardware acceleration is another challenge is I believe is artificially being created by certain leading companies in this domain. Vulkan has created wonderful standard specifications of this tech such as OpenCL and SYCL. However, due to the fragmentation of hardware vendors on these specifications, hardware acceleration solutions are scattered everywhere (Nvidia’s CUDA, AMD’s ROCm, Apple’s Metal, and I’m sure Intel is soon to come up with their own). AMD has created HIP (Heterogeneous-Compute Interface for Portability) to be able to write the same code for both CUDA and ROCm and Aksel Alpay from Heidelberg University has created hipSYCL which allows writing the same code for any CPU, Nvidia/AMD/Intel GPU, which is absolutely amazing.
I would like to mention one challenge that the industry/community has made great progress in. Visualization tools RViz, Gazebo, and newer more real-time/interactive tools such as Plotjuggler and your Foxglove Studio have come a long way to help us analyze during and post experiments.
What developments do you think would have the most outsized impact on our day-to-day lives?
For me, in terms of day to day activities and reaching the common user, I believe IoT devices are the next/immediate impactful technology. Even before home robotics like Roombas, cooking robots in fast food chains (White Castle), or last mile delivery services like drones gain large prevalence; Internet of Things is growing fast, convenient, and easily accessible. And for this reason, I believe that micro-ROS is an important project for transitioning robotics/standardized robotics communication on the IoT domain, where devices are typically embedded, but more importantly locked down due to proprietary concerns like Alexa/Google Home. This may not necessarily be a domain for robotics in the sense of action and control, but perception is definitely a factor in the IoT domain, that we as a robotics community have a certain perspective towards.
What problems are your robotics teams tackling?
I left this for last since I wanted to discuss the “hypocrisy” I myself am a part of. Having said the above on what challenges there exist for the Robotics Revolution, I myself work on writing algorithms for Path Planning, something that has been done many times over and applicable solutions exist. While I encounter (and complain about) issues, like lack of better ROS language bindings and lack of hardware acceleration interoperability, I work on trying to make robots move in dynamic and uncertain scenarios, under these pain points. But what can I do, I enjoy making robots move as I am sure most of us do
This ended up being longer than I thought, but I hope that some of these concerns are resonated with the industry and would love to see solutions/more support & progress towards them.
What I work on
Julia/Rust ROS Language Bindings for easier access to ROS
Standardized Hardware Acceleration Technologies (See: hipSYCL)
MicroROS for IoT devices