Click on a mosaic piece!
Go ahead, click!
Jacob Rothfus
RoBox!
I was a founding member of a team of 7 High School Students who created RoBox. We worked together to create a very low-cost, take-home robotics kit. Setting out to do so in May of 2017, we taught our first week-long camp in late July 2017. This summer, we taught our second week long camp at Qualcomm. This time with updated software are and hardware.
The RoBox kit aims to be extremely affordable, while still giving students the opportunity to build, program, and customize their own bot! The kids start by attaching the electronics to the plastic board. Then they wire up all the components, decorate and put on the paper walls. Next they are ready to plug in the bluetooth dongle from the kit into a laptop and open up the RoBox website. On the website there is a Block based programming environment the students can use to program their robot. The students put the blocks together to create programs, then they hit run and the robot will execute them. The website also gives the students the ability to drive their robot using a usb remote controll that is plugged into the laptop. The website and Robox do this by intereacting using 2 languages we created: RXL and RCL.
My Roles and Responsibilities
Lead UI Designer and Software Engineer
I was the lead User Interface designer and one of the 3 software engineers on the team. I integrated the website with the blockly library and workspace to make the experience both integrate with RoBox, as well as be intuitive and help students find solutions.
    What I did:
  • Created RXL Language
  • Created Block Commands
  • Created The User Interface

Patent Pending!

Lead Counselor
I was the designer of the curriculum for the week long camp and I created the programming challenges for the students. This included designing the challenges and their difficulty progression, creating the blocks and workspace, customizing the blockly UI, and creating help tabs that were meant to both describe the challenge and assist the students in finding a solution. I was the lead counselor for the camp which included 14 kids age 8-11. My primary role during the camp was to lead discussion, encurage independent problem solving, and ensure the curriculum was taught to each student. I also acted as the primary tech support specialist for when the kids were having trouble or any part of the robot malfunctioned.
Technology

In this project I used the following technologies:

I also practiced

Software Inventions
RXL Language
RXL is the language that is used to allow the website to communicate with the RoBox. The blockly workspace translates the block based coding into the RXL language, then builds and organizes the commands so they can be sent off to the RoBox. The language was created to allow for maximum information to be sent from the website while keeping file size low. We achieved this by making each command one byte and each parameter one byte using numbers from only 0-255. Numbers 0-100 were treated normally, however each number above 100 specified either a variable or a sensor value.
For example the following command makes the robot move the right wheel at 100% power (and only takes 3 bytes to transmite; the [100] is the human-readable form of the commend but will be replaced by a binary 100 when trasmitting:
WR[100]
However the following command would make the robot move at a percent power specified by a variable:
WR[106]
The 'W' tells tells the robot that a wheel will be moved; the 'R' specifiies that it will be the right wheel; the number in brackets specifies the power.
The User Interface and RoBox Programming
The User interface is the block based programming environment that allows the students to program their RoBox. The challenges are the part of the website that contain this user interface and allow and encourage the students to program.
The challenges are made up of 3 things: the workspace, the blocks, and the peripherals. The workspace is the Blocky workspace created by a collaboration between Google and MIT. This workspace allows the initiallization of blocks, and the functions of dragging them and fitting them into other blocks in the workspace. The blocks are objects written in java script that employ Block blocky's Block class. I custom created the blocks for RoBox and wrote the Javascript that translated the individual blocks into RXL languange commands. The peripherals includes many miscelanous functions.
The first is the first button at the bottom of the screen that says RUN. The RUN button compiles the program in blocky, translates it to RXL, and reorganizes the RXL code. It then send the code to the RoBox through the use of a google chrome app which allows us to send data to a bluetooth dongle plugged into the computer, which allows us to send data to the RoBox. Next is the STOP button, which simply gives the command to the RoBox to stop any program that it is currently running. Both the RUN and STOP commands include RCL. The Next are the CONNECT and DISCONNECT buttons which use RCL and the bluetooth dongle to communicated with the RoBox, allowing a user to easily connect and disconnect to the RoBox. Next is the HELP box and button. The Help box pops up a window whenever the webpage is loaded or the HELP button is clicked. This box contains the information about the challange and gives hints about how to create a solution. Finally there is the SAVE button. This creates a local file on the users computer that saves the data about the currently displayed program that Blockly uses to load programs. The button is superfulous as the website saves the data whever someone leaves the page as to ensure a students work is saved. The data is then loaded everytime the webpage is opened.

The Testing and Driving Pages

The testing page is a page that allows the student to individual test each part of the RoBox. This page is mainly used to check if the RoBox was built correctly and is also used for debugging. It employs RXL and RCL. The driving page allows the student to plug in a controller and manually drive the RoBox. This page employs the sole use of RCL to make the response time of the RoBox much quicker. This is possible because the commands are very simple and predictable.


The Hardware

The board that functions as the main control system is DFRobot’s Romeo BLE Mini board. We chose this board because of it’s compact size (1.77” x 1.52’’) and Bluetooth functionality. Furthermore, it has 8 digital and 4 analog pins – enough to support all of our sensors, motors, and our battery box. The Robots conatins the following sensors:

The Robot also contains 2 low power motors and the following peripheral electronics: