Hi all, I’m preparing a project proposal for a team of computer science undergrads (600 hours). I was hoping some input from the ROS community could help scope the project, provide interesting directions to pursue, or recommend not to proceed with the project if it is unlikely to be fruitful!
As background, I’ve been wondering why there is currently no app in the play store for publishing my sensor data (camera, GPS, IMU), or ARCore outputs (VIO, depth data) from my android phone to ROS. It seems plain that such an app would be of great value and would be widely adopted/utilised, particularly in educational and hobbyist robotics. So my project idea was to explore developing such an app.
(A side interest for the project could be to try setting up a full ros install on the phone (in docker?), and/or to connect the phone to a simple diff drive platform via usb)
Note I’m aware there has been plenty of work/discussion regarding smart phone apps and ROS over the past 10-ish years, I acknowledge it is not a new concept, but it’s relatively new to me and I’m trying to get my head around the landscape of options in 2023.
Approaches I’m aware of: ROS APIs for mobile apps.
I’ve put together a spreadsheet capturing options I’m aware of, after a couple night’s googling. In broad terms I see three possible approaches:
- write a native android app in java
- use unity/c# to build to an android app
- perhaps use some framework to write apps from pure javascript (React native? I don’t really know how that would work, I have no experience in this area).
There are also distinctions regarding whether to use DDS directly or websockets and a bridge node.
My spreadsheet is here, you can see I’ve identified 10 possible options:
My first thought right now is to take the AR-RViz project as a starting point (Unity with TCP bridge to ROS), as that is a recent and impressive project. Still, I think the javascript and java approaches have their own merits, so I’m open to suggestions.
Questions for community:
Do you think there is a possible project here that is:
- likely to deliver a valuable outcome
- achievable by a computer science undergrad team with a total of 600 hrs to spend
If so, any comments on particular approaches which may be promising? Or on the otherhand, approaches likely to be a dead end? Any input or feedback would be greatly appreciated!