This cute little robot is based on parts that anyone that tinkered with development platforms and electronics is going to be accustomed to. That is why this project is aimed at people who want to learn more about hardware but also at programmers that just want something cheap to run their code on. Imagine having not one but TWO complete robots to experiment with at the price of one Arduino platform !
The cheap factor makes this design suitable for experimenting with swarm robotics. It's easy to build with easy to find, off-the shelf parts or easy to mass-produce. It could be sold in kits or preassembled. Due to the open source and open hardware nature of this project, you or anyone else can copy the design and build one at home or integrate it in a industrial design, free of charge and without restrictions.
Hardware stuff :
- Atmega328P-PU Microcontroller
- L293D H-bridge
- NRF24L01+ Communications module
- Chinese DC motors with gears
Pretty standard, right?
DC Motors (geared)
Connectors and Accessories / D-Subminiature Connectors
Frequency Control / Crystals
Battery (currently 9v but will switch to rechargeables)
currently 9v but will switch to rechargeable Li-Po batteres
For the first prototype, I manually etched the design on plain cooper-clad boards.
Home etching is something like old arcade games : Easy to pick up, but hard to master.
Since Ionly had plain copper boards, I chose the toner transfer method.
There are many guides on the net, but, unless you have the exact same materials, something is not going to work like you expect it to.
This usually ends in a few days of trial and error. After spending way more time than intended on wasting toner and a lot of paper, my magic combination came to :
- cheap, printer foto paper (waaaay better than glossy magazine paper.
-secret ingedient: A heat press
Usually, the toner is actually transfered to the copper when pressure and heat is applied to the paper. This is done with a household iron. However, this method is sloppy and results in poor quality.
I solved this problem by chance. When I was checking out a shop that had a CNC, a heated press caught my eye. Since the CNC did not work, we borrowed the heat press and tried that instead of ironing the board. This yelded much better results because of the constant and even pressure. Usually 5 minutes in the press and the toner transfers 99%.
Since this was an early prototype, we first designed the PCB to be one layer and with through hole components. There will be at least 2 more versions:
-Dual layer THT (for kits)
-SMD version (for the pre-assembled variant)
We designed the PCB according to the datasheets of each component (Note the L293D does not have thermal relief pads on the ground pins, so the ground plane can act as a heatsink ) and according to standard design rules.
As for design/CAD software we basically had 2 options: KiCad an EAGLE.
We finally decided on KiCad, even if it's a bit harder to work with mainly because this one is open source and does not have any restrictions, like EAGLE (max number of layers / Use is limited to non-profit applications
(This was the only acceptable screenshot I could find of the design process. Besides, we still have to rule out some quirks before we release/licence the design)
The robots will be programmed using Arduino. Using RF24/radiohead library to control the NRF24 communications module, the bots will be able to broadcast their state and intention and can receive missions from the swarm. The system will allow the swarm to organize and divide their power to accomplish multiple objectives in the same time.
The decisions in the swarm will be taken collectively, and each robot will have a certain state, and behavior based on his health and mission. This will translate into a availability to receive more missions.
On the low level programming, each individual robot will contain 3 layers:
-Basic control : movement, collision avoidance, receiving radio signal
-Orientation and mission: orientation to objective, accomplish mission
-Role in swarm and behavior: each robot state, availability and emotional state. (this will be adaptive)
The last layer will adapt the robot's role in swarm using a learning algorithm and receiving feedback from the swarm after every action. This changes will lead to efficiency in taking decisions.
The important order of layers is obvious, and the decisions will be taken, analyzing the most important layers first (ex. first avoid an obstacle if it is in the way to objective).