The overall goal of this project was to make two robots with two controllers – one pair using the
and one pair using the
. We have a sumo-ring where the robots "fight", and when a bot gets knocked out of the ring, the game is over. There’s a manual control mode where you can run them around yourself – and a autonomous mode where they trace the outside of the sumo ring.
Step 1: Mounting
We moved the steel plate to underneath the bot for extra weight. We laser cut a piece of acrylic to fit as a mount for the
so it can sit above the bot.
Mounting your BBB to any kind of plate above the board is pretty simple. We added four extra standoffs to allow for a little more space between the
and the robot board, and four more on the top side of our acrylic plate to keep the BBB from resting directly on it.
Step 2: Wiring
The wiring portion is fairly extensive. In addition to the
, we have two
mounted on the bot. We use the
to convert the analog signals from the sensors on the robot to digital values we can send through the BBB and eventually to
The sensors on the robot only sense the colors white and black. The analog output reads ~1.7 V when sensing black and ~2.5 V when sensing white. The
Black analog inputs have a maximum voltage reading of 1.8 V, so in order to read from the analog inputs on the board we need to step down the voltage. Using two resistors and a simple circuit (pictured above), we ran the voltage across both resistors and the SDA and SCL inputs from the
across only one resister. This made it possible for us to read the analog inputs from the robot itself without killing our
has four analog inputs but in our case we only need three (because we only have three sensors). On the bot, there are three rows of inputs, each labeled PWM, DIR, W, R, and B (or some variation of these). The input labeled "R" is our analog, sensor input. Wire each analog output on the bot directly to one input on the
. The VCC on the connects to 3.3 V on the board.
or the logic level shifter is mounted opposite of the
. The voltage is supplied by the BBB and goes into the 3.3 V input in Header J1 on the
. Pin 1 and 2 in Header J1 go to DIO 7 and DIO 8 on P8 on the BBB.
We use LiPo batteries to power the bot itself, and small portable battery packs to power the board and they’re mounted below the acrylic plate.
Step 3: Controller
In order to control the bots, we built the controllers from scratch. The handles and midsection are completely 3D printed.
The controller uses two
Pmod JTSK 2s
, and a large battery pack that’s zip tied to the back. The
are wired in to the
digital outputs and are supplied 3.3 V and ground from the board. We use the
to communicate to the
on the bot itself.
Step 4: Programming
Our goal was to use
for the entire project. You have to begin by loading
a great batch of tutorials
on LabVIEW Makerhub that walk you through how to do this. The
wifi is not an automatic plug-and-play either, so make sure to get wifi setup on both boards. Follow
to learn more about setting up wifi – we used
to SSH into the board and the wifi is solid.
program is fairly extensive. We use UDP to communicate between the two boards over our router. As I mentioned before, the sensors output different voltages depending on whether or not they sense white or black.
Our sumo-ring is black with a white outline, so we have our motors shut off when any of the three sensors see white and output a voltage about 2 V. In order to re-set the game, we allow the bot to just be simply placed back into the ring, and pulling both triggers on the controller will re-set the bot.
When the bot senses any white while in autonomous mode, it’ll turn until none of the sensors output above 2 V and drive straight until it hits white again.
Step 5: The Final Product
We took our bots to NI Week and we had our sumo ring in the LabVIEW pavilion.
The sumo ring is pictured above – with a black center and white boarder. The two bots fought hard and there were many casualties, but they worked really well and they were a lot of fun to drive.