Overview
Welcome to "there's safety in numbers" applied to robotics. While any robot given an assigned task could break down along the way, swarm robots have safety through redundancy built-in.
In the Tufts Robot Locomotion and Biomechanics Lab, our unique research area explores individually capable robots with the ability to attach to each other to form larger structures and overcome obstacles.
Demo
While we're currently using larger-scale robots to test "climbing behavior," we intend to downsize the robots in later iterations. The current robot version is able to climb another robot from any angle, except when both are facing head-on.
About the Robot
To climb other robots and stay attached, the robot uses velcro strips on the wheels and the shell. Aside from the electronics and axles, the entire robot body and internal components are designed in SolidWorks and 3D printed.
The robot is currently driven through a webpage hosted on the ESP-32 board that can be connected to via the school wifi or local router when a faster connection is needed. Later robots will also have an autonomous swarm system driving each robot.
My Contribution
While my research partner has larger been responsible for the shell design and shell-to-wheel interaction, I've created the internal design of the robot. This has included the mechanical and electronic systems as well as the programming for the remote drive controls. Everything shown on this page was my own contribution.
Why Velcro?
Using velcro on the wheels allows for robots to easily attach and detach from each other while maintaining a strong connection. This will allow a lot of flexibility in the way that large groups of robots will attach to one another. Shown below, the velcro is even strong enough to allow a robot to climb upside down!
Design Iterations
First Design
For the first iteration, I wanted to minimize the number of motors to save space and reduce the number of electronics needed. However, the drivetrain took up more space than I wanted and added unnecessary mechanical complexity.
Second Design
In the second major version, I used four direct-drive motors instead of the two drivetrain-connected ones. This greatly simplified the internal design, allowing for more overall shape complexity. The crab-like front wheels enabled the front of the robot to not get stuck on corners but the flat underside often would get stuck while trying to move over the lip of another robot's shell.
Final Design
The final iteration has space underneath to help it move around edges and has 4 internal-facing wheels which also reduce the likelihood of it getting stuck on a corner while climbing.
PCB and Electronics Design
Breadboard Prototype
The first electronics setup only used one motor driver since the earlier robot design only had two motors. A 7.4v battery powered both the motor driver and the ESP32.
This design was updated to include a second motor driver and a voltage regulator.
Final System Schematic
The main microcontroller is a wifi-capable ESP32. An 11.1v LiPo battery powers the whole robot via the screw terminal shown on the left of the diagram; it connects directly to the motor drivers but uses a voltage regulator to supply power to the ESP32. Each motor driver controls two motors for the four total motors connected to the screw terminals on the right side.
Protoboard Iteration
I had already created the breadboard version with one motor driver but I wanted to test a fully soldered version with both motor drivers before finalizing the PCB.
Final PCB
The final PCB minimizes the space needed for the electronics board and allows them to be rapidly manufactured for additional swarm robots. The voltage regulator sits underneath the ESP32 to save space.
Webpage Demo and Code Link
The webpage to control the swarm robots can be accessed from either a phone or laptop by connecting to the robot's IP address. The connection uses a WebSocket protocol written in C++. Touch controls allow phone users to pilot it while arrow keys are used on a laptop.