RobBoss - Robot Control

We needed a way to control our Robbie that was flexible and relatively nondescript. We explored and implemented traditional gamepad/joystick controls, but we decided a iOS bluetooth solution would be worth a shot. It wound up being a very practical choice because we were able to easily extend our implementation to support additional configuration in software that would not have been possible with a physical controller.

Enter iOS

I designed a very simple iOS application that interfaced via bluetooth GATT to Robbie. Robbie advertised GATT characteristics, which our iOS app wrote values to in order to control or configure it. It worked well, and iOS's bluetooth APIs are thankfully quite simple to interface with. Despite Bluetooths relatively limited range we were able to reliably drive Robbie further away than I found comfortable, which was a pleasant surprise.

RobBoss iOS Screen
RobBoss iOS

Enter Electron

For testing I didn't want to have to redeploy an iOS app every change, so I also developed a desktop application using "noble", bleno's counterpart. Electron made this very easy, as its node runtime let me run noble while serving my test interface without having to run separate processes. This tool was very helpful since I was able to demo changes to the bluetooth interface without having to make time consuming changes to the iOS code until ready.