Skip to content

EZ RASSOR Controller

Ron Marrero edited this page Mar 10, 2020 · 8 revisions

Summary

The EZ-RASSOR Controller is mobile application developed for iOS and Android using React-Native. With the mobile app, users can operate the manual and autonomous controls for the EZ-RASSOR based on its ROS MASTER IP Address. This means that it can operate either the real or simulated hardware.

images/EZRASSOR_CONTROLLER.jpg

Installation (Easy)

From an Android device, download the application through the Google Play Store. Open the app once it is complete and follow the usage steps below.

Installation (Development)

The latest development version of the app is hosted on Expo and can be downloaded for either Android or iOS here.

Usage

  • Network Connection

After installing the app, you must connect to the same LAN network that your EZ-RASSOR/simulation is running on. Next, open the app and locate the EZ-RASSOR/simulation's IP address. Click the search bar in the top left of the application and enter the IP address here, followed by a port number (typically 8080 unless you configured it differently). The contents of the box should look something like 192.168.0.214:8080 when you are finished, although your exact numbers will be different.

  • Operation

After you close the network connection screen, the app should connect directly with the EZ-RASSOR. Since there is not currently a success prompt, you will need to attempt to move the robot to verify that the connection succeeded. After that, you can control the wheels, arms, and drums of the EZ-RASSOR based on your touch gestures to the corresponding icon.

Caveats

The application currently does not support multi-touch. Therefore, moving the robot and operating the drums cannot occur at the same time (with the app) and are necessarily two separate operations. We intend on removing this limitation in future versions.

Technologies Used

NPM
NPM is the package manager used to develop the EZ-RASSOR controller. With NPM, the EZ-RASSOR controller is able to use the React-Native and the Expo package.
React-Native
React-Native is a JavaScript framework to write mobile applications that target both iOS and Android. Through this framework, we can define components to specify the look and behavior of the various application screens.
Expo CLI
The Expo NPM package includes a command-line interface which builds the React-Native application and hosts the application to a specific port on the developer's machine. From there, any user who has the Expo client installed can download and run the hosted version of the application. This functionality is important for live testing and debugging. Additionally, Expo produces an Android APK from the application build which is used to deploy the application to the Android App store.

Building an APK (Development Note)

Expo makes it easy to just make an APK of the controller. It does this by building a signed version of the app on their build servers that you can then download. To do this, go into the controller project and run the following command:

expo build:android -t app-bundle

Note: The app-bundle argument at the end is needed to produce an optimized version of the application for deployment to Google Play. This optimization is specifically for application assets, namely the images being used.

The first time you run this, you will be prompted for an Expo account. Use the existing Expo account for ez.rassor@gmail.com (Note: You will need the ez.rassor@gmail.com password to perform this action [AKA contact an admin]).

After that is done, just login to expo.io/builds to find the latest version of the application that was just built and download it. This will give you the signed APK that will be sent to Google Play for approval.

Once you have this new signed version of the APK, you can submit it to the Google Play console for review and subsequent publishing.

Additional Note: When uploading the APK to the Google Play store, you will notice that certain permissions like Camera permssion are required for the application. This is not because of any code inside of the application, but because the APK comes bundled with the Expo CLI which does require those permissions.