The Nintendo Switch video game console has been incredibly popular, and that’s for a lot of reasons. Great games, the ability to switch between portable and home console modes, and affordability are all contributing factors. But one of the coolest features of the Nintendo Switch is the controller setup. Two Joy-Con controllers can snap onto either side of the console for portable gaming, or players can use them separately as individual controllers for multiplayer gaming. Adam Soileau used a pair of those Nintendo Joy-Con controllers to operate a motorized version of the classic Rock ‘Em Sock ‘Em Robots toy.
The Rock ‘Em Sock ‘Em Robots toy was first manufactured way back in 1964 by the Marx toy company, and is now sold by toy giant Mattel. The standard version of the toy features two stylized plastic robots standing in a boxing ring, which players are able to control via mechanical linkages. Those controls let players move the robots around the ring a little bit and make them punch each other. If your robot is able to punch the opposing robot’s head just right, the head will pop up to indicate that you have won that bout. For this project, Soileau replaced the manual controls with servos and then connected them to the Joy-Cons for commands.
To motorize the movement of the robots, Soileau used a total of 10 different servo motors connected by 3D-printed linkages. For each robot, two servos are used to move around the ring in the X and Y axes. Two more servos are used to actuating the arms, and the final servo is for tilting the torso from side to side. Those servos are controlled by a Raspberry Pi 4 Model B through an Adafruit Servo Control HAT. A Python library called evdev is used to interpret button presses coming from the Joy-Cons, which connect to the Raspberry Pi through Bluetooth. Originally, Soileau planned on using gyroscope data to turn gestures into punch commands, but was unable to make that work. Instead, players can move their robot around using the joystick and can punch using the trigger. The “Y” and “A” buttons are used to tilt the robots, causing them to bob and weave.