|ROS Resources: Documentation | ROS Index | How to get help | Q&A help site | Discussion Forum | Service Status|
we have been running ROS2 on Android with no issues. We have been using Java and C++ bindings. For backend we used the experimental Zenoh backend in client mode, because it has better support for routed networks.
We built everything from source ourselves.
We’re currently working on a project featuring dedicated Android tablets used as HMI devices. Tablets are connected with robots over dedicated Wi-Fi links, with micro-ROS glueing the two worlds. The HMI itself is written in C++ and SDL2 with only the bare minimum of platform-specific gunk, with a specific goal of making it easy to adapt to other platforms if / when needed.
Overall I think this is a very workable and cost-efficient approach for many non-critical uses. Not to mention the user’s familiarity aspect, which means a lot more than I initially thought it would.
Amazing. Would you have a public project demonstrating that, please?
sorry about the late reply. We don’t have a public demo yet, but I presented about this topic (Mobile Gateways on ROS2) at the Zenoh Summit: Mobile Gateways for ROS2 Systems with Zenoh - YouTube
I’m currently trying to port ROS-Mobile-Android to ROS2.
some widgets are already working!
Hi @spiderkeys did anything ever come of your plans to build a Qt based GUI using ROS2, and if so did it ever go open source?
Im currently trying to get ROS2 working on android with Qt and it causing me to question my life choices
For a number of reasons, we ended up building our Qt GUI applications using pure DDS, instead of ROS2. On the ROS2 side, we define our messages using .idl instead of .msg and reuse those same IDL files in our GUI app, such that it can communicate with our ROS2 applications without any issues.
We use conan to define and package all dependencies for the application, which makes it fairly trivial to compile and deploy libs for any platform/architecture. For Linux, we bundle everything in an AppImage, so the user doesn’t need to install anything, beyond having a stock Ubuntu 20.04-or-later system.
You might find this approach a bit easier to reason about, and it should work just fine for Android, though the downside is that if you actually depend on any specific ROS2 packages (like geometry2 or something), it won’t really solve that for you. We made the decision early on to keep our GUI application pretty much completely agnostic of ROS2, such that it could be easily adapted to work with other comm protocols and vehicle frameworks.
Thank you for the information that is really helpful. Ill take a look at the pure DDS approach.
Ill have to look through our workspaces to make sure but i don’t think that we rely on any ros2 specific packages off the top of my head so this may well be the solution.