My work over the summer has inspired me to attempt to create a small robot of my own. In my work, I have been responsible for testing for testing the positioner robots we make. This means I am very familiar with the code they run and their hardware. A good way to test my knowledge and push it even further is to try to create my own robot that serves a different purpose.
Of course I do not have the time and resources that our whole team together has so I will not be developing my own electronics board, firmware or machining my own parts. Instead I have invested into some on the market parts. Here’s some details some basic ideas and parts behind a robot and what I will be using for them and what the positioners use for them:
A robot’s “brain” is simply a computer of some sort with code. Usually small with low power consumption so that it can run on battery for some amount of time. For this I will be using a Raspberry Pi 3, a small single board computer commonly used in this role. For the positioners we use a combination of computers since we have several thousand robots that are trying to do similar things without disrupting each other. So we have a desktop computer that calculates movement for the positioners, a beaglebone black (similar to a raspberry pi) that translates commands into CAN and sends the CAN commands to each positioner which all have their own small in house engineered board that accepts CAN commands.
A Raspberry Pi 3
A Robot is worthless without a purpose. This can be many things but most commonly some variety of moving itself or moving other things. My robot will be a small self driving car on wheels powered by electrical motors. The positioners are small sticks that move fiber optic cables with electric motors to a very high precision.
A pair of DC Motors for the Robot
Similar to an animal, a robot needs some way to interpret its surroundings. This might be cameras, infrared sensors, lasers, microphones or even a software simulation. I plan to have a camera on my robot but that will not be its primary source of senses for movement. Instead it will sense its environment with IR sensors to avoid most objects. I also plan on including a software simulation of the hardware to help with movement. The positioners completely rely on a software simulation. Using this they calculate how far to move for their next position and can avoid collisions with each other.
A Camera for the robot
One of the most important parts of a robot is the code that runs them. The computer might be the brain but this is the actual mind. A lot of different languages are used for robots including MatLab, C++ and Python. Similar to the positioners, my robot will use python because it is quick to write and flexible. Some important parts of a robots program are transformations from hardware values (like motor rotations) to practical values (like distance), movement logic, sensor logic and simulation. To do these properly, you need to know the specifications on different parts very well. Some robots like the positioners go through a calibration measurement before use to learn the different values about the hardware like the arm lengths, motor offsets and the central position.