Table of Contents
This is the first of several articles and videos about building a “real” robot. In this first installment, I will introduce “DB1”, the full-sized robot project that I am building. You can follow along and build an identical robot or use the articles and videos in this series to design and build your own unique robotic creation.
I’ve already published many robotics projects and experiments, which of course is not too surprising considering the site is called “DroneBot Workshop”! All of these previous projects have a few things in common:
- They use inexpensive “robot car” bases, acrylic cutouts with 6-volt DC gearmotors and tiny wheels.
- They use an Arduino as their “intelligence” module.
- They typically perform only one or two functions simultaneously.
- They can be built in just a few hours.
These projects are great in that they are educational and their low cost allows pretty well anyone to start exploring robotics. I plan to keep using these in future projects.
But they could hardly be described as being “real” robots. They are not merely toys, but they have limited capabilities. I like to think of them as prototyping tools, useful when you are trying to learn robotics or test new sensors.
Today I’m going to start construction of something bigger and more powerful. A “real” robot.
A “Real” Robot
It’s pretty difficult to come up with a standard definition of what a “real robot” would be, as it can be different things to different people.
Many people look at science fiction for examples of “real” robots. From the goofy robot on the old “Lost in Space” shows, the evil Daleks in Dr. Who, to the loveable R2-D2 of Star Wars fame robots have played a part in popular culture for a very long time.
Some would consider a “real” robot to be a humanoid device, similar to Star Wars C-3PO or Star Treks’ Mr. Data. The modern Sophia robot is an example of research in that direction.
Then there are the robots that we already encounter in real life. Robotic arms and machines that are used on assembly lines. Robots employed for dangerous activities like bomb disposal and working in hazardous environments.
My definition of a “real” robot is as follows:
- It needs to be capable of a reasonable-sized payload, at least a kilogram or more.
- It should be able to be “trained” to perform specific tasks.
- It should be able to “learn” and improve its performance of those tasks.
- It needs to be able to handle obstacles that would prevent it from performing its tasks.
- It should be “aware” of its environment and be able to navigate within it with minimal human supervision.
Based upon the above criteria I’ve come up with a design, one that I will introduce you to today.
I’m calling my creation “DB1”, with the “DB” standing for “DroneBot”. I think the “1” is pretty obvious, and one day I hope there will be a “DB2, DB3” etc. While the name might be pretty bland an unoriginal, and possibly confused with some older database software, I’m sticking with it for now.
Eventually, I may hold a contest to give it a better name, but for now “DB1” is its moniker.
I want to build a robot that you can build too. You might want to build the whole thing exactly the way I’,m building it, or you might only want to build a section of it. You may wish to build a completely different robot of your own design but incorporate some of the circuitry and programming that DB1 uses.
I want to make this as universal as possible. To accomplish this I’m doing the following:
- Standard Parts – You can build a great robot out of a used Segway, an old vacuum cleaner or a bunch of bicycle parts. But I’m not doing that. I’m going to use parts and components that you can easily obtain, either locally or over the Internet.
- Standard Interfaces – No need to reinvent the wheel here. Standard interfaces like Ethernet, I2C, SPI, and USB will be used throughout the design.
- Modular – This is a HUGE project, and as such it will end up being a fairly expensive one. By breaking it down into modules you can choose to only build part of it, or build it in stages to defray the cost.
- Buildable – I will document everything I’m doing in great detail so that you can also build this. Some of this documentation will be in the form of this series of articles and videos. I also have plans for detailed documentation that I’ll make available very soon, stay tuned for news about that.
A robot like this is not a trivial project, far from it. To build it requires skills in mechanics, electronics and programming. We will be working with machine intelligence and other esoteric fields of study.
And I really don’t want to do it all alone.
I’m hoping that at least a few of my readers and viewers will take it upon themselves to also build a similar robot. And I will support you any way I can, including exchanging ideas and code.
I have a few ideas for doing just that and I’ll be announcing many of them in my newsletter. If you haven’t done so already, please subscribe to the newsletter. This way I can keep in touch with you and bounce some ideas off of you.
Let’s make DB1 a community project! We can all learn from each other.
DB1 Main Sections
I have divided this robot design into three main sections or “layers”:
- Navigation Layer
- Intelligence Layer
- Environment Input/Output Layer
Let’s examine these three layers individually.
The Navigation Layer performs movement and navigation of the robot. I can operate independently or in conjunction with the other layers.
You’ll be able to control the navigation layer using “high-level” or “low-level” commands.
High-level commands include commands like “move forward to a position 3 meters ahead”, “move to co-ordinates x & y” or execute a preprogrammed movement. The robot will be able to handle situations when the position it is moving to is blocked by an obstacle.
Low-level commands are more basic, things like “rotate the left wheel 4 turns and a specific speed”.
Communication with the navigation layer can be done using Ethernet, WiFi or Bluetooth.
Physically the navigation layer consists of the motors and bottom frame. Electrically it consists of motor drivers, motor controllers, navigation sensors, microcontrollers, and a single board computer.
My current design uses a custom motor controller, which I will be described in detail as a project very soon. It also uses both an Arduino Mega 2560 and a Raspberry Pi 3 B+. Some of the navigation sensors will be I2C, some will be connected directly to the Arduino Mega 2560 and some will have their own Arduino Pro Mini microcontrollers that in turn communicate using I2C.
The Navigation layer sensor will be located all over the robot body.
The Navigation layer will also house the batteries that power the robot.
This is the “brains” of the robot. It controls the Navigation layer and it communicates with the Environment Input/Output layer. It also controls the robots master communications, allowing the device to interact with people.
The main component of this layer will be a single-board computer (SBC) with a solid state drive (SSD).
I’m currently choosing a SBC for this layer and currently the main contender is the HiKey970. This board is a powerful processor with a dedicated neural processor unit (NPU) and artificial intelligence capabilities.
One thing the board lacks, however, is a SATA port to connect the SSD. The board does have a couple of expansion connectors and an SSD can be connected through them with the use of an adapter card.
The choice here is not final as it will be a few months before I am ready to build this layer. By then there may be some alternate choices for a SBC for this layer.
This layer will communicate with the other layers using Ethernet and can also make use of Bluetooth and WiFi. It will also have direct connections to some of the I/O devices such as video cameras.
Environment Input/Output Layer
The final layer is the Environment I/O Layer. This layer allows the robot to interact with the outside world and explore its local environment.
This layer is where all of the non-navigation sensors are managed, by “non-navigation” I mean the sensors that are not specifically tied to the Navigation layer. Sensors in this layer include, but are not limited to:
- LiDAR to map the local environment.
- Video camera for object recognition (there are also video cameras tied directly to the Intelligence layer, these are different).
- Speaker to make sound and voice.
- Microphone(s) to listen with and to receive voice commands.
- Temperature, Humidity and Light sensors.
- Proximity detectors.
I’m sure that this list will grow as the robot is constructed.
The key fact about the sensors here is that they are “high-level”. This means that they pre-process data, either by themselves or in conjunction with a dedicated microcontroller or microcomputer.
By doing this the layer only exchanges high-level information with the Intelligence layer. Here is an example that illustrates this.
Let’s say the object recognition camera spots an object that it has already been trained to recognize, such as a blue ball. Instead of sending the Intelligence layer the pixel data about the object we tell it that it’s a blue ball (or, more likely, something like “object #241”).
This means that the Intelligence layer doesn’t need to know how to recognize a blue ball. It just needs to know what to do when a blue ball is detected in a specific location.
This distributed processing model is repeated throughout the robot design.
The Environment layer will make use of several microcomputers and microcontrollers and will communicate with the Intelligence layer using Ethernet.
Many of the Environment sensors will be mounted on a turntable, located in the upper section of the robot. This arrangement allows the sensors to be moved to different angles.
<INSERT TURNTABLE PICTURE>
This is similar to the way we humans, and most animals can rotate our heads – our ears, eyes, mouth, and nose all rotate with it at the same time. This way we can aim all of our “sensors” at a specific location.
It makes crossing the street a lot safer!
The turntable is driven by a stepper motor and can rotate a full 360 degrees, although its field of view is blocked on each side by the robot structure. The stepper motor, a 12-volt Nema 17 sized motor, is controlled by the Environment I/O layer.
As the turntable can rotate continuously it would make it difficult to run cables and power to it. It will need its own rechargeable power source and the recharging will be done via induction. Communications with the devices on the turntable will be done wirelessly as well.
Communications Between Layers
The Navigation and Environment I/O layers communicate with the Intelligence layer using Ethernet. I chose this because it is a standard and it is very fast. Also, all of the single board computers I am using or considering using have Ethernet connections.
By using Ethernet I will also have the option of hooking in a standard computer for development or troubleshooting purposes.
The power for all of the layers, except the turntable in the Environment I/O layer, is supplied from the Navigation layer. The power source will eventually be rechargeable batteries located in the base of the robot, however, during development, I will be using a bench power supply. This will allow me to determine the final current requirements so I can select suitable batteries.
Conclusion – What’s Next?
This is just the beginning of this series and I hope it has sparked your interest. In the next installment, I will go into details about the robot chassis design and construction and will introduce you to the Actobotics channeling that I built the robot frame out of.
After that we will go over the motors and wheels, I’ll show you how to select them and how t mount them.
We will then start focusing on building the Navigation layer with sensors, motor controllers and microcomputer.
I hope you follow along for this journey into robotics. It promises to be quite a ride! There will be a new installment of this series every Thursday. Please join me for the next one.
Now, if you’ll excuse me, I have a robot to build!
I was waiting to see when someone will start a serious project such as the one described herein. I have been following all the previous projects and I know that the builder is capable to achieve this goal. I will be reading all future installments and who knows maybe I’ll get the “bug” to attempt something similar based on what I will be reading.
Thanks for starting this great project.
Thanks John, I’m looking forward to building this. Hopefully the “bug” will bite you and you’ll start building one of your own!
Este es uno de esos projectos que he anehlado desde hace tiempo te sigo en tu canal hago arduino y pi3 pero esto me suena mas serio asi que para adelante y gracias.
Pd.I can write this comment in english but i let you know you have more people folloing for other countries…
Hey Bill. Many thanks for all your videos. You’re a great instructor and just the right person to be teaching such a complicated subject. I look forward to seeing your progress and hopefully applying some or all your techniques. Keep up the excellent work.
I hope you plan to provide a bill of materials with links to products, so it’s easy for us who want to keep up, to use the same materials.
Hello sir, well, you are blowing up the space with this fantastic project. I know you will provide a list of material eventually but I am wondering if the aluminum stud that they use for building inside walls in government offices are good enough for the frame? They are easy to bend them tough.
Hello Bill, I have been following your videos on youtube and have learned alot from them. I look forward to this series because I am building a robot and this is going to be a real learning curve for me. It is nice to have someone like you that takes time to explain the hows and why things work in such detail, Back in the early 80´s I started a robot project using a Timex sinclair for the ¨Brain¨ and some Toyota windshield wiper motors for the power plant. I guess times are a changing :). I have been tinkering… Read more »
I have been in electronics for some 40 years. I am interested in building the Real Robot you outlined here. I look forward to future installments. We’ll get through this together.
I caught up with the build process to Part 3 this evening. The Acotobotics stuff is nice. One small thought, throughout the build I will probably be 2-3 weeks behind because of the necessity to order parts and wait for them to arrive. Rather than paying shipping every week, I will try to lump together my purchases to every couple of weeks. This is not a big deal, It might just reduce the amount of near realtime conversation and debugging. I’ve got most of the normal electronic parts on hand from previous projects. For the more specialized sensors it would… Read more »
My budget is a couple thousand… please proceed.
Hello sir, please is ot possible to have your Email address
Thank you for this series of articles. It is kind of funny that you mention the Dalek’s (who were actually a cybernetic race and not a robot), as I’ve wanted to build a robot based on them and K-9 for quite some time, But didn’t know where to start. Hopefully this will be what I need to do so.
Question, will the three sections be able to move independently of each other? And how big is your final robot going to be?
this is my first time to follow your trianing, i am very interested
this is my first time to follow your training, i am reallly interested
hi sir, how can i buy that robot??? can you send me the link???
I want to build this robot and ultimately something even bigger to mow the lawn but I’m gonna start with the Elegoo robot first and work my way up. I had many years of programming PLC’s in industrial automation but this is somewhat different.
Hi sir I want to ask one think that can you help me in making the real life robot .Can you also tell me which tools are required to make the robot and which type of programming tools should I use to make the robot in real life . Actually I want to create my own robot which should have new features with the latest technology .Sir I want to make that robot the nation inspired me for this creation .
Your projects and approach on teaching and explaining everything is awesome!! I’m just starting out working with motors, steppers and Arduino. Really enjoying your lessons. I’m a bit in overload with all the knowledge but trying to understand. I have a few projects I want to build so this is absolutely amazing!! I really appreciate the time you dedicate to teaching and you are absolutely brilliant!!