Giggles and Bots!

Check out the video to see our project in action – or watch and share on YouTube!

Our team designed, developed, and tested a complete robot/human control system. We used a GiggleBot capable of being controlled by an ergonomic remote radio controller, with programmable MicroBit’s controlling functions for both. Simply tilt the controller in your hand forward/aft and left/right to control GiggleBot!

Once our GiggleBot was suitably programmed, our next step was to integrate into a “pod” with three other teams. The requirement is for each individual group within the pod to be able to control any one of the four robots at a time. The goal is to move the robots throughout a four room environment, where only one group has control of the robot in a space at a given time. Once the robot moves to the next space, control is switched so each group controls the robot that just entered the space. In order to accomplish this we designed a communication architecture allowing the teams to take and pass control using the remote radio controller! The controllers are programmed to remain on one channel between 1 and 4 at a time. By pressing Button “A” on a controller, the controller will sequence to the next higher channel in order to control a robot waiting on that channel. This ended up being a very convenient method for the Pod to control individual robots and quickly sequence to another robot when required.

We created the software code using Microsoft’s MakeCode web based browser editor. It is a simple medium of “blocks” you drag into the editing space in order to set the parameters and commands of the controller and robot MicroBit’s.

The picture below shows the code we designed for our Controller’s microbit. On initial start up, the Controller is set the Channel 1. By “Pressing Button A”, the user can cycle the Channel up to Channel 4 to match a particular preset GiggleBot. We initially struggled with how to implement this approach, but in the end utilizing a simple single button press to sequence the individual controller channels while keeping the GiggleBot’s on their own preset Channels ended up working the best in “Pod” world. Using the Forever command, we programmed the Controller to send X and Y “tilt” commands to the receiver microbit in the GiggleBot. We adjusted sensitivity too for a smooth ride!

Next comes the receiving code for the GiggleBot’s microbit. Like the code for the Controller, the Start Up and Press Button A commands are very similar. We used the Forever command to set the left/right wheels and motor accelerations to match the X and Y values commanded by the Controller on the same frequency. This ended up working great for our group and we were really happy to be able to adjust the control settings to set optimal control performance of the GiggleBot.

A unique, and challenging, aspect of this project was to integrate a “Swarm Mode” controller into the Pod. The idea here is that when Swarm Mode is active, the designated fifth Swarm Mode controller will have overall authority over all GiggleBots operating on Channels 1-4 while the individual pod controllers will still have partial control for fine course corrections.

This concept, while easy to understand, proved to be very difficult to transfer into the coding language. We found multiple ways to make this happen, each method had it’s own downfalls during our process. Ultimately we came up with the following coded process to provide the overarching Swarm Control. When the master Swarm Controller is connected, it sends it’s individual X and Y commands to all robots by cycling through Channels 1-4 very quickly. These commands override the individual pod commands yet the individual pods still retain partial authority over their individual robot. This ended up working pretty well despite that the swarm controls have a tendency to diverge over time between the pod of robots.

Once we had a solid grasp of the software coding aspect of this project, we then set out to design the hardware. Driving the GiggleBot requires moderate hand-eye coordination, so providing the user with an ergonomic controller designed to facilitate easy use is a critical step in creating a successful human-machine system design.

We chose to capitalize on existing technology incorporated by gaming companies like Microsoft and their Xbox system. However, due to the small size of the microbit hardware compared to larger Xbox controller size, we could not simply use existing Xbox tech. We needed to pare down the size of the controller to be in proportion to the microbit. This step guarantees that both adults and children will be able to comfortable interact with the A and B buttons on the microbit while holding the controller. A larger controller increases the distance the user’s thumbs need to travel from the edge of the controller to interact with the A and B buttons. Our controller strikes this balance perfectly.

The 3D printing process was pretty simple and was complete within a few hours. Once printed, the microbit is easily installed into the controller and the battery pack can be attached on the back of the controller with velcro, tape, or glue.

These short steps will help you to use our GiggleBot in no time at all!

1. Turn On your GiggleBot:

Press the On/Off Switch next to the microbit LED Display mounted on the GiggleBot. Make sure the battery is fully charged.

2. Turn On your Controller:

Simply plug in the battery cable into the battery pack mounted on the back of the controller. Make sure the battery pack is fully charged.

3. Link the Controller to the GiggleBot:

Make sure the GiggleBot and Controller are both set to the same Channel on their respective LED displays. If not, simply press Button A on either to sequence to the next channel. Keep the Controller parallel to the floor though, since your commands will immediately transmit to the GiggleBot when their Channels match!

4. Moving your GiggleBot:

Simply tilt the Controller forward/backward or left/right to move your GiggleBot! We have adjusted sensitivity to maximize controllability.

5. Swarm Mode!

To enable Swarm Mode, connect a Controller with preset Swarm code. The master Swarm controller will control approximately 66% of the swarm movements, with individual control set at about 33%.

Have Fun!

Scroll through the GiggleBot Task Analysis below or click here to open the file.

This was in incredibly fun project which required multiple aspects of Human-Machine Design to build. The capabilities of GiggleBot and microbit are almost endless, and you can design and connect all sorts of hardware and motors to the GiggleBot like robot arms etc. It would be a great future assignment to expand on the principles we have already covered to develop a robot with more function and capability.

Designed by Neil Gaigler (The Coder), Rachel Bachelder (Task Analysis), Eric Cohen (Controller Design), and Mike Feltovic (Website/video). Thanks for visiting!