We have been building autonomous robots for decades now. Here are just some of the examples. We build many that we can not discuss due to confidentiality agreements.
- The Autonomous robot give away
- Build an Autonomous Robot
- Autonomous Robotics Engineering Services
- Shop Programmable Robots
- Shop Sensors
We get many requests from people to have us build autonomous robots. We also get many requests from people that want to do it them selves, which is great! One of the quickest things people come to realize, is that it’s not easy! If it were easy, everyone would be doing it and you would see a lot more robot roaming around! Even Google, who went on a rampage a while back buying tech robotic companies, is realizing this. Check out this Bloomberg article. The reality is making a mobile autonomous robot is very difficult.
The good news, is we know how to do it and we have done it… The focus of this post is about mobile autonomous robotics. Making a fixed robotic system autonomous is not difficult at all (ie a robotic arm, or a CNC machine, etc.). We have built and programmed many of these. It is easy to know where your are when you are anchored to the floor! The challenge comes when you start moving around. The main thing is you need a lot of sensors. If you think you can just slap on a set of wheel encoders and start driving around and know where you are after making a couple turns, you are sadly mistaken. This was my first attempt about 25 years ago. I thought I had it all figured out. I put the encoders on follower wheels so if the drive wheels slipped the encoders would not loose position. Then after making some turns, the error started accumulating. Before long the robot is off course by inches, then feet, etc. etc… Encoders are great, but they need to be used with other sensors. (BTW encoders are just incremental counters, for mobile robotics they are placed on the wheels and count off as the wheels rotate providing velocity, acceleration, distance traveled, etc.)
So now what? Lots of sensors and computing power! We have a lot of sensors listed here. We are a Arduino authorized reseller. If the system is going to be doing a lot of computing, a computer will be required. For sensors, LIDAR (like radar, but using a laser) is probably the most popular range finding system, but they come at a price. They typically spin around and provide a 360, 270, or 180 degree field of view with distances measured all along the arc. They spin around many times a second. So a lot of data! IMU (Inertial Measurement Unit) used to measure the accelerations, angles, inertia, etc along all three axis. They provide a lot of data real fast so using this you can see if the robot has turned, is on an incline, accelerated, decelerated, etc. Electronic Compass (you can probably guess what this does). They are not too accurate around motors, steel, etc. So they are worth looking at for rough data, but if your heading is off a couple degrees and you drive straight for 100ft, you will not hit your target… Sonar, IR, contact sensors, etc. can all be used to. Measure the current of the motors, helps to determine if the robot is struggling to do something, or warn you if the motors are burning up, etc. Vision System have come a real long way too. Using the camera as a range finder to see obstacles, measure distances, etc. is all possible now with a camera and computer. Line following, ground beacons, bar codes, RFID tags, etc. can all be used too to help position your robot. If you are outdoors GPS is great, they have very accurate systems now, but you through in all the outdoor issues of weather, uneven terrain, etc.
All the sensors, computer, the robot itself, etc. are just the hardware items. It all has to be put together to make a system. Then the real effort begins. Programming it! This takes hours, days, weeks, months… No other way about it, sorry. The cool thing is there are a lot of building blocks out there for simple systems like an Arduino based robot. If you are using a computer you can use Microsoft .NET. ROS (Robot Operating System) is a very popular platform too. We have experience with all of this methods and much more. SLAM (Simultaneous localization and mapping) is a very common term thrown around. It uses all the sensor input and builds a map so your robot can drive around without crashing into things. The bottom line is autonomous robots take a lot of effort and cost a really good chunk of money in both the hardware and development of software and firmware.
Next time you get up and move over to the TV, etc. Think of all the senses you are using to know where you are, how to proceed, how to avoid the shoes left on the floor, avoid the ceiling fan that is too low, not too trip on the carpet to hardwood floor threshold, not walk into the coffee table that has 4 legs and a top (if the robot is using LIDAR that is set to scan below the top of the table, but the robot is taller than the table, it will see the legs, but not the top of the table and crash into it. LIDAR is typically 2D, 3D adds huge money and a ton more data). The simple task of moving from point A to point B we take for granted takes a lot of effort to teach a robot to perform.
If you need help with your autonomous robot, we will be glad to help you out. The point of this post, is to explain that making a mobile autonomous robot is no small task. The good news is the development is for the 1st robot, then it can be transferred to any followup robots with no additional development, unless you want to take the next evolutionary step…