The nice thing about smartphones for robots is that they have almost everything you'd want for a robot: GPS, IMU, 2 cameras, battery, battery charging circuitry, a high-res display, touch interface. And ALL of that for $60 -- for say a used Pixel 1. You simply cannot get that amount of hardware for $60 for a RPi-based robot.
I actually wrote all the logic in an HTML5 app running on the phone, which communicates with the motors via bluetooth using the experimental HTML5 bluetooth API. I also wrote a "roslite.js" which allows for a ROS-node-like-but-async abstraction from within a single monolithic JavaScript:
https://github.com/dheera/roslite.js
This wouldn't work for more advanced robots of course, but for simple telepresence and educational robots it can work while being much easier to code than an Android app.
The nice thing about smartphones for robots is that they have almost everything you'd want for a robot: GPS, IMU, 2 cameras, battery, battery charging circuitry, a high-res display, touch interface. And ALL of that for $60 -- for say a used Pixel 1. You simply cannot get that amount of hardware for $60 for a RPi-based robot.
I actually wrote all the logic in an HTML5 app running on the phone, which communicates with the motors via bluetooth using the experimental HTML5 bluetooth API. I also wrote a "roslite.js" which allows for a ROS-node-like-but-async abstraction from within a single monolithic JavaScript: https://github.com/dheera/roslite.js This wouldn't work for more advanced robots of course, but for simple telepresence and educational robots it can work while being much easier to code than an Android app.