Here are my top 5 robotics development tips that will help you build a robotic solution, whether you’re a novice getting into robotics or an experienced roboticist building the next big thing.
First, make sure your robot is needed
When it comes to building any robot, first and foremost, do your research. Make sure customers want your solution, you’re solving a real business need, and conduct as much A/B testing and user studies as possible.
Building hardware requires much more investment, time and patience in comparison to pure software applications, so the more you know before you start the journey, the higher chance of success. It may sound silly, but start by building a cardboard version of your envisioned robot with your buddy inside of it, pushing it in mechanical turk fashion. This is a sufficient way to validate (or invalidate) your idea with a potential customer, and is a method that has actually been done with great success by many robotics companies!
Leverage open-source software
Open-source software is the foundation of the majority of today’s technology – your TV, favorite apps, web browser, phone, car, and even microwave likely run open-source software. The main purpose of open source is to help developers not reinvent the wheel and to create better quality software through collaboration – even large companies know it makes sense to collaborate on common infrastructure.
Must-Read: 9 keys to selecting your robot’s OS
As software is the brain and soul of a robot, this naturally led to the development of the Robot Operating System (ROS). ROS is a set of open source software tools designed specifically for accelerating robotic application development. These tools themselves were developed on top of existing open source code and comes with components that were constantly being reinvented by robotics researchers and companies. This includes sensor drivers, navigation algorithms, visualizers, and much more.
In general, ROS allows engineers to move quickly so they can focus on solving an actual problem with the robot versus having the robot be a roadblock. With ROS, small teams of 2-4 people can use these tools to build complex robots, which previously only large companies with extensive staff and capital could develop.
It’s important to note ROS is not the only open-source robotics toolkit out there, nor the oldest. But it has come out on top and is now a de facto standard in both industry and academia. You can attribute the sudden jump of robotics startups in the last 5-10 years primarily due to ROS.
Generally speaking, there is no real disadvantage to using ROS as it is extremely modular. You can use as much or as little of it as you want in your application. Components have a permissive license that allows companies to add code into their proprietary application without having to give code back.
Start with the software, then build the robot
Lay a software foundation that is built on open-source software before building the hardware – you don’t need to reinvent the wheel. To develop that base, learn ROS, learn Linux, learn OpenCV; trust me, you’ll have bigger problems to solve as you’ll still have to write a slew of code. Use that to drive the development of your hardware architecture and choose sensors and other components that will “just work” thanks to ROS.
Once you have that basic infrastructure and are ready to tweak it, don’t think that every improvement you make has to be substantial. Try to think of incremental ways to get to your desired final state – you’ll often find that small improvements are sufficient to meet your requirements. Alternatively, you may find your premises about the problem were all wrong, but now you have the opportunity to fix your foundation before committing to a potentially exhaustive and incorrect solution.
Simulation doesn’t compare to the real world
In certain industries and situations, simulation is absolutely necessary. For example, in scenarios where extensive real-world testing is cost-prohibitive, developers need to work in simulation. However, simulation is never going to capture real environments exactly.
Companies developing smaller robots that are lightweight or lower-cost often have the benefit of being able to experiment in real life. As much as possible, test on real systems with real data – it’s the best way to develop robots and get hands-on experience. Starting with basic components that give first-hand results without simulation is worth it and much more gratifying. You will gain tangible, invaluable results that can be applied to reality.
Cloud services are your friend
One of my mantras from the earliest days of our company is not to host any server ourselves, but rather depend on cloud services for tasks like hosting source control, performing continuous integration/deployment, hosting packages, and hosting databases. It’s easier to tap into a cloud service that already exists versus making and maintaining your own – another instance of not reinventing the wheel.
While it’s fairly straightforward to set up your own, it requires lot of maintenance (backups, redundancies, security, etc) and it adds up overtime. Instead, when you leverage a pre-existing cloud platform, the only thing you need to focus on is developing your application. I would give this same advice to any tech company – paying for these services will be cheaper than maintaining your own in both terms of time and money.
Be a part of the robotics community
ROS is successful because it has a strong, worldwide community. Building, participating in and contributing to the robotics community is critical – without community, open source projects always fail. ROS is successful because core developers listen to and act on feedback from the community, outside contributors are encouraged to and have an easy way to contribute code.
There are organizational resources such as the ROS documentation wiki, ROS Answers, special interest groups (SIGs) for specific areas of robotics development, and conferences like ROScon. Getting involved with the community can provide input on what you’re developing and help when you are stuck on a problem.
Final words of wisdom for robotics development
If you are trying to break into the robotics industry, or even if you are just looking to bolster your repertoire of knowledge, my advice, in summary, is this:
Level 1 (beginner): Buy a real robot. Get acquainted with how it works, inside and out. You don’t need to make one from scratch – pre-built hardware like a Turtlebot or equivalent out-of-the-box ROS-compatible robot will work just fine.
Level 2 (intermediate): Learn ROS. This is the Rosetta Stone to unlocking robot language and development, and you can’t move forward without understanding it. Without it, you will not have the common language needed to speak with other roboticists. If you want a job in robotics software development – knowing ROS is a must. Learn it and then apply it to something of your own.
Level 3 (roboticist): Once you have mastered ROS, start building your own platform, but more importantly, start building your community. The two most vital steps to being a successful roboticist are learning ROS and building a strong network. Go to hackerspaces and robotics meetups to get more exposure to other technology, meet friends or potential colleagues who believe in your mission, exchange ideas, and continue to grow.
About the Author
M.A. Shah is the CTO and co-founder of Simbe Robotics, a San Francisco-based company that uses autonomous shelf-scanning robots to help physical retail stores track and optimize inventory, as well as create a better customer experience. Prior to co-founding Simbe Robotics, Shah was a software engineer at Willow Garage.