I would like to dedicate this episode to people that test their code in simulation prior to go to the real robot. That is the way guys. If you don’t test first on the simulation, you can break the robot or harm somebody with your untested code. So the procedure is always, test on simulation until it works there. Then test on the real robot. I know, we all want to test directly on the robot because is cooler, but, we don’t neither like to do unit tests but we do them, right?!?!? So…
Today we are going to learn how we can use amazing Unity powered simulations with ROS controllers.
Want to learn from the best ROS Developers of the world?
Then you cannot miss the 4th ROS Developers Day 2021, a full day of ROS practice delivered by the best ROS programmers of the world.
The conference is completely practical. 12 hours full of ROS practice from the comfort of your home. Check it out here.
Now let me introduce you Sarah Gibson, Senior Engineering Manager, Robotics | Unity Technologies. She is going to talk with me about using Unity in robotics development, and specially in using ROS and Unity to build ROS based robot simulations.
Let me introduce you Allison Thackston one of the engineers developing some parts of Robonaut. Her ROS code was running out on space! Today she is here to talk about her experience shipping code to Space.
Want to be the one creating the robots that will go to Mars?!?
Then, start by taking our ROS learning path for beginners.
But before going into that, let me remind you about our ROS online academy. Yes, at the Construct we have created an online academy named The Robot Ignite Academy which contains a ROS learning path for beginners. The path is composed by:
This episode is about understanding why you can’t build your startup alone, and some criteria to properly select your co-founders.
In this podcast series of episodes we are going to explain how to create a robotics startup step by step.
We are going to learn how to select your co-founders, your team, how to look for investors, how to test your ideas, how to get customers, how to reach your market, how to build your product… Starting from zero, how to build a successful robotics startup.
I’m Ricardo Tellez, CEO and co-founder of The Construct startup, a robotics startup at which we deliver the best learning experience to become a ROS Developer, that is, to learn how to program robots with ROS.
Our company is already 6 years long, we are a team of 15 people working around the world. We have more than 100.000 students, and tens of Universities around the world use our online academy to provide the teaching environment to their students.
We have bootstrapped our startup, but we also (unsuccessfully) tried getting investors. We have done a few pivots and finally ended at the point that we are right now.
With all this experience, I’m going to teach you how to build your own startup. And we are going to go through the process by creating ourselves another startup, so you can see in the path how to create your own. So you are going to witness the creation of such robotics startup.
Get Your Team Tight
To create your startup, you need three things:
An idea or the product
A team to realize your idea
A small amount of money to start implementation
We covered this first point in Episode 1. Episode 2 deals with the second point. Episode 3 will deal with getting the money to start.
3 reasons that Startups Fail
No market need. That was covered in Episode 1 and will be addressed in more detail in future episodes.
You ran out of cash. This Is another version of the first problem – no market need.
Not the right team. Yeah!
You will need a team that helps and supports you. You cannot do the startup by yourself. I understand how tempting is to do the startup by yourself, especially for engineers like us who want to work on our project and forget about the rest of the world.
You Cannot Do the Startup by Yourself
Thinking about doing the startup by yourself is a recipe for disaster, for several reasons:
You cannot handle all that is required. Again, I know how you feel about that because I also felt that. We are engineers, after all. I understand you, my friend. However, you need to be realistic if you want your startup to succeed. And here is the reality: you cannot handle everything required to create the first prototype. Yes, I know you believe you can, but you cannot. I’m not telling you that, given an infinite amount of time and resources, you couldn’t do it. I’m not telling you that. I know you are intelligent enough to do it, but not in the amount of time required to have a good product ready to be sold. It doesn’t matter if it is software or hardware. The large number of tasks that you will need to do is so big that the amount of time required will increase, and you will be unable to deliver.
You need other people to tell you that your idea is stupid. If you are on your own, it is more likely that you will think that all your ideas are great and start chasing all of them. So you need somebody with other opinions to act as a filter.
You are not giving the appearance of professionalism. It looks like you are just doing your hobby. If you need investors later, they will likely not take you seriously because solopreneurs don’t look serious. Instead, they look like they are just playing. They will not trust that you can keep building the product to make them rich. Also, a single person indicates that you have problems managing other people, so this problem will appear later when you need to scale your business.
You are not preparing yourself for what is coming. This is by far the most important point. If you want to build a startup, you will need a team in the short term, like it or not. You will need to learn to work with other people, synchronize with them, negotiate, make arrangements, solve conflicts, make people happy on the job, and all that. Yes, I know you are thinking that you are not building a startup to do all that. Instead, you are building a startup to put a cool product in the world. Yes, that is right. But to do that, you need to do all the rest.
It is very likely that as an engineer, you don’t have those skills now. So now is the moment to start practicing. You are going to need this if you want to create a startup that grows. So you better start practicing now with a small team and then scale your learning as your company scales.
If you really hate to deal with people, manage people, make arrangements. If you really think that the only thing you want people for is to provide commands that they must execute, then think again about creating the startup. Your team is the most important part of the startup because they are what makes the delivery possible. We’ll talk in future episodes about how to hire and manage teams, and how to fire.
If you really don’t like to lead people, then don’t start the startup. You cannot manage it by yourself. You will need a team. Even if small right now, you will need some team. Then if things go as planned, you will need to hire more people.
Maybe you are thinking about going small now, but you will hire others to do the management as soon as you succeed. That is okay if you want to be managed by somebody else.
Leading a team is the most difficult job. It is more difficult than creating intelligent robots. I personally do not like to do that job, but for some reason, I’m not bad at it. Managing is one of the parts of my job that I don’t like, but I do it extremely carefully because I think it is essential to the success of our company.
Start With Co-founders
When talking about a team, I’m talking about co-founders. That means that those are the people that will create the startup with you, so you share the ownership of the company. That is different from people who work at the company for a salary. Co-founders are co-owners; workers are not. Therefore, their privileges and salaries are different (usually lower salaries for co-founders). We’ll cover how much to pay to co-founders and workers in the next episode, but basically, co-founders should be able to work for free (because they own part of the company). If you have money to spend now, you may be interested in hiring people with no ownership in the company. In that case, you should pay them a salary.
I assume you have no money to spend on salaries, so you would like to find co-founders to take the risk with you.
So what is the minimum number of co-founders you can start with?
You need to start with a minimal team. Remember that at this time, you are still not generating any money, so that you will be using your savings or taking out loans. You also do not know if the market will accept your product, so it is very likely that you will need to do a few rounds of testing before getting a product that starts generating revenue. If you are thinking about getting an investor, no investor will invest in your idea without a demonstration that your product is interesting for the market, so do not count on that money yet. You need to prove first that your product has a market. So you will be relying on your savings or loans from your family and friends (we’ll discuss this in Episode 3).
So you need a minimum amount of people. However, do not start with too many people; otherwise, your funds will deplete quickly. Also, there could be a lot of disagreements that break the team.
What is the minimum number of people necessary to get your startup running?
I think the minimum is two people: one for getting the engineering work done and another for running the business. That is a minimum. However, if the product is very complex, you may need more engineers to build the product. For example, at The Construct, we started with one person on the business side (myself, no idea how to do it at that time) and the rest of the team developing the product (three people). That is a lot. I do not recommend so many people, but in our case, it was a success. The more people on your team, the more difficult it is to take decisions.
I think that two is the minimum. Definitely, in most cases, I don’t think you need more than one business person because the goal of the startup is to discover if your product has any traction and, if not, design the proper experiments to figure out how to change it to achieve traction.
That doesn’t mean that people will not do overlapping work. On the contrary, it is very likely that everybody will have to do marketing tasks, show demos to clients, call clients, etc.
When you select the people for your team, you will be tempted to ask your friends or family for that. That is a little bit dangerous. Being friends is one thing. Working together to make a startup succeed is another. It is not even close to working together in a third-party job.
The startup is your baby and your team’s baby. But your friends’ management style for the baby may be different to yours, especially concerning your work ethic. Startups require a lot of work. You can disagree on using one technology or another, but that will not break the team. But you cannot disagree on your company’s work ethic.
Basically, work ethics means how hard you are going to work. Any successful startup requires massive amounts of work. Expect that.
Personally, I prefer the work ethic of Elon Musk (he works a lot, an insane number of hours). But other people think that is not a proper way because you need more rest. That is okay. Each one has his vision. The problem is when you mix those together. If your partner wants the weekends free for the family, but you don’t (or vice versa), you will have a clash of opinions on a very basic point.
In startups, you will make so many errors that, in my opinion, the best strategy is to work more and more to compensate for the mistakes quickly. But, unfortunately, that is why the person who works more will feel that the other is not doing their part. This is the beginning of very deep discussions that are difficult to solve because you cannot convince the other part of your working style.
Yes, you will have to learn to work smarter, but that will not reduce the number of hours of work but include more things to do. And you need to!
In conclusion, do not select as a co-founder somebody because you like him. You may end up disliking him after a few months of pressure. Do not select that friend of yours with whom you had the most laughs when he always left studying to the last day or was copying on the exams and feels proud (unless you also did the same). Don’t select the one that thinks weekends are for resting (unless you feel the same). If you have different work ethics, you will have a lot of disagreements. It will be very difficult to handle those if you are friends or family because you cannot have a serious discussion with them without affecting your personal life.
How Do You Distribute the Jobs?
It is good that you have somebody who has studied business or has some experience on the team. If not, do not worry that much. Select the person, and that person will have to start in an express process to learn about it. This is one of the aspects you will have to master in creating a startup: you will have to be learning continuously at high speed. There will be so many things you don’t know how to do, and you will have to dedicate a lot of time to learning. We will dedicate one episode only to this.
You do not have to be the CEO if you don’t like that position. Usually, engineers prefer to act as CTO, the company’s chief technical officer. The CEO decides the direction of the company, and the CTO determines how to reach that direction technically. However, at this point in the startup, those titles don’t matter because it is too early to define well-separated works. After all, everyone will be helping.
The more skills they have, the better, but that is not mandatory. It is more important that they have the attitude to learn fast and jump into problems. The whole team will need to learn a lot quickly throughout the process, so the important skill is learning fast and continuously, and the attitude of willingness to do it.
Hands-on Exercises
How do we apply this to our robotic bartender startup? In this case, there are two people: myself as the business director and a young engineer as the robot and software developer. We know this is enough for this stage, at least until we do the first test and assert that the robot is useful and somebody may buy it.
So basically, you must get a few people to develop the product and at least one person to investigate how this product can be sold. Both teams will work very closely and sometimes overlap jobs. You do not need to assign any titles right now, like CEO or CTO. This is just taking time and complicating your project. You will think about that once you get an investment or reach break even.
In Episode 3, we will discuss how to get money and compensate the team for their work.
Subscribe to the podcast using any of the following methods
In this episode, Ricardo is the one interviewed. Sina Pourghodrat is a Surgical Robotics Software Engineer who on his spare time runs a Youtube channel about Robotics and how to become a roboticist.
He wanted to interview Ricardo in order to introduce ROS to his audience, and let them know of the importance of it when building robots.
In this special ROS Developers Podcast series, we will explain how to build a robotics startup. This series is dedicated to all that are thinking about creating a robotics startup, either about hardware or software, but everything related to robotics.
Step by step, we’ll explain how to create that robotics startup with real-world examples, including:
How to select your co-founders and team
How to look for investors
How to test your ideas
How to get customers
How to reach your market
How to build your product
And everything starts from zero. So we’ll cover all the steps to building a successful startup.
Who I Am
I’m Ricardo Téllez, CEO and co-founder of The Construct, a robotics startup that delivers the best learning for aspiring ROS developers on how to program robots with ROS. Our company is six years long. We are a team of 15 people working around the world. We have worked with more than 200,000 students and dozens of universities around the world. They use our online academy to provide a teaching environment for their students. We have bootstrapped our startup. That means that we haven’t had any business investors. We tried the ‘investors thing,’ but for several reasons, we chose not to go ahead with the investment. I will explain in later episodes.
With all this experience, I will teach you how to build a startup. And we will demonstrate the process by creating another startup so that you can see the path to creating your own. So, you are going to witness the creation of a robotics startup.
You can take this as advice, and whatever you consider incorrect or don’t like, just discard it. That’s okay.
Then we are going to go.
Why Do Robotics Startups Fail?
Unfortunately, most startups fail. And, it is more common for robotics startups to fail.
There are several reasons that robotics startups fail (I will add a few links here on the podcast show notes where there are some posts that analyze this situation). But I would like to mention that one of the most common reasons robotics startups fail is because we are engineers.
We fall in love with our robotics idea that nobody wants to buy. We look for investors. We add more time and more money. But, in the end, we have a robotics product that nobody wants to buy, either because it is expensive or, more often, because it doesn’t solve a real-world problem. Instead, it is a robot that interests engineers but is not interesting for the market – for the consumer.
We often forget that the goal of a startup must always be to create a business, not create a robotics product. Okay, the business must be about robots, but it has to solve a real problem. Coolness doesn’t matter. To have a successful robotics startup, the business is what matters. Otherwise, we run out of money and die.
Examples of failures include the Jibo robot, the COZMO robot, and the BAXTER robot. All of them are cool robots, but nobody wants to buy them! The companies raised millions of dollars. They failed because they ran out of money because they didn’t have a sustainable business model.
In the world of startups, many people are interested in generating round after round of investment, until they die. In this podcast, we will not promote the search for investors for our crazy idea. We are not interested in having a fun ride until the money is over. Instead, we are interested in building a real business. We want to create a business that produces money, as much as possible. Or, at least enough to sustain the team and research lines.
We may need investors at some point. But, our goal is not to get as many investors as possible and then have the business die. Instead, our goal is to get the required investment, if any, and then build a business as scalable and profitable as possible. Of course, we aim at a multimillion value company, but let’s not go so fast that we lose control and crash.
Let’s start, step by step.
Decide On the Idea
First, decide on the business idea. This is what we are going to analyze in Episode 1. We will follow three steps:
Step 1 – Decide which problem to solve
In this Step 1, we will decide what problem we will solve with our startup. That’s always how it must start – by trying to solve a real-world problem. The best way to identify a problem is to look for a problem you experience and where robotics can provide a solution, with the current technology. It could be a problem in the robotics field (for example, a new communication bus for transferring large amounts of data), or a problem in the real world that can benefit from a robotics solution.
For example, The Construct identified a problem with learning about ROS. The ROS official Wiki tutorials are amazing. I personally learned by using those Wiki tutorials. But we wanted to speed up the process of learning ROS, and go faster than what the Wiki provided. In response to this problem, we built The Construct. The Construct provides courses in our academy that are based on online simulations. So you can get the meaning of the different parts of ROS very fast and very quick, because you are practicing. So this is a problem in robotics where we provided a solution. But there are other problems in the world that can be solved by using robotics.
Here have two considerations:
Don’t try to put robots where they are not needed. Just because you work on robotics doesn’t mean you need a robotics solution. For example, robotics companies have been trying to put robots in supermarkets, so the robot can move around the shelves and make the inventory. Well, a couple of months ago, Walmart canceled their project with Bossa Nova Robotics, which included inventory robots, after finding that by doing the job with humans, the process was simpler and cheaper. So that’s my first consideration for deciding about a problem to solve. Don’t try to put robots where they are not needed.
Don’t get caught up in the hype. Be grounded about what you are going to build. Don’t promise things that are cold, and you know are not possible. You are creating hype that will not deliver.
Step 2 – Decide on hardware or software
You cannot decide to attack both things. Decide on hardware and software, unless you are rich and have a well-trained team. Even like that, it is still a call for failure.
Deciding to work on hardware means that you will develop the hardware that somebody else will use for a purpose. Somebody else will put the software on it (apart from the basic software drivers that will ship with the product). For example, you decide to build a quadruped like Boston Dynamics. Concentrate on building the best quadruped and assume that somebody else will use it for a very concrete application by putting the software on it. Or, assume that somebody else has already written the code for an application, and you only need to include it in your product by tweaking it. For example, you need the ROS navigation stack for your hardware product. That’s also okay because you are basically developing the hardware and the drivers for that, but then you are taking software that already exists and putting it in your product. You are making minor modifications, but you are not developing the software. You are not maintaining that software. Do you see the difference? I hope yes.
If you believe it is absolutely necessary to build the software for the hardware you create because otherwise, your product will not work. In that case, you have a huge problem. If this is your first startup, I would not recommend it. If you still want to go in that direction, partner with a software company to develop that for you. For example, one success story is that IBM partnered with Microsoft to provide an operating system for their PCs. However, Microsoft didn’t do that for their phone. Instead, they focused on both the phone’s hardware and the operating system. In the end, they failed, and no one remembers that phone.
If you decide to concentrate on the software side, you may be creating an application that runs on multiple robots that already exist out there. Or, another option is to ship your software with an existing robot. You sell the robot with your software.
Deciding on one or the other is not easy. Each one has its advantages and drawbacks.
Software is faster to develop and requires less investment. It is easy to scale and distribute. It is easier to provide value to a customer with software. On the other hand, almost nobody wants to pay for software. Everybody wants software applications for free. They see the value, but they think it should be free. That’s the world that we are in. To make a real business from that is going to be very difficult.
Everybody sees the value of hardware, so they have no problem paying for it. However, the robotic product must provide real value. It requires a lot of money, and it’s a slow process to develop hardware. It takes a long time to do every cycle, and if you make some mistake and only notice it weeks after you were done, printed, and built, then you have to go back all those weeks. So it’s harder to develop hardware.
As an example of the difference in public perception between software versus hardware, I would like to share my experience selling online courses, which is similar to selling software. We get calls from people saying they have bought a 10.000€ robot and want to learn to program it. However, when I explained that the courses were 39€, they didn’t want to pay. They are willing to pay for the 10.000€ hardware, but they think 39€ for a lesson is too much. Crazy world!
Finally, you must use ROS. Yes, or yes? ROS will save you time, so much more than you can imagine. Please, please do not develop your own framework. Instead, just ROSify your product. You will save countless months.
But I don’t know ROS! I heard this from the back of the room. Then, quickly go to our ROS Intensive Training and learn it. We provide the fastest method to learn ROS, including how to apply it to real robots. Learn ROS right now. It is your best investment of time.
Please, please, please do not try to build your own framework. It’s not going to work, and it’s too much work. The Jibo and the Cozmo did it (and I think the Baxter also, even if later they build a ROS mode), and you know how they ended.
Step 3 – Narrow the solution as much as possible
Now that you have your idea, reduce the scope. If you are like other passionate engineers, you are already thinking about all the marvelous things that your robotic product will do. You need to cut them by 90%. Just leave the essential 10%. You need to think about the very core of your application.
The reason is that you need to validate your idea as soon as possible. To validate your idea means testing to ensure that somebody is willing to pay for your product. And the only way to do that is to put your product on the market, as soon as possible, and convince people to buy it. Nothing more. And, you need to move fast; otherwise, you will spend all your money before you have something to sell. Also, you don’t know if your solution is required by the public. So, narrow the idea to the very core, the one that allows you to show the basic functionality. That is what you will build to show to the public and see their reaction.
Recap
See below a summary of the three steps:
First, decide which problem to solve without trying to put robots where they are not needed, and creating hype.
Second, decide that either you are working on producing a hardware or software solution.
Last, narrow that solution as much as possible.
I know that the three steps were not what you wanted to hear. If you are like us, your idea is to build a master robot that will understand the human language under a lot of traffic noise, grasp anything from any place, and clean the house while moving the furniture. I do not mean you cannot do that, in the future. But now, start small. So cut, cut, cut. And then cut more! Cut your idea until you have the bare bones.
A Real Example: Our Startup Idea
Let’s decide on the startup that we will build during this podcast series:
Which problem will we attempt to solve?
I hate waiting in the queue for my coffee, especially when I decide to stay at the coffee shop table. So I want a robot that brings the coffee to the table directly from the barista. The idea is that we can order coffee from the table using a web app. The order goes to the barista, who prepares the coffee and provides it to a robot that then delivers the coffee to the table.
Hardware or software?
We will concentrate on the software. We will use an existing mobile base that provides all the hardware functionality. We may need to build some covers for our own look for the robot, but that should be the only hardware thing that we do. The rest, we will dedicate to configuring the ROS packages necessary for it, providing the usage interface for the barista and the coffee shop customers.
Narrow the problem
The robot will only deliver coffee in standard cups with a lid. It is not possible to serve cups with no lid. No cakes, no sandwiches, no cans. Only coffees, teas, and frappuccinos are in standard cups with a lid. Of course, the robot doesn’t have any arm that manipulates the beverages. It only has the wholes where the barista will put the beverages and from where the customers will manually take the beverages. The robot doesn’t have any sensor that detects when the cups have been taken from it. Simpler, it waits for a fixed amount of time and then returns to the barista. The robot doesn’t auto-charge. So, when the battery is gone, it is gone.
As you can see, we are trying to build something for a very specific problem that we suffer and that we know, as roboticists, can have a robotic solution. We also restrict the problem to a very narrow case, and even like that, we’ll have a lot of problems.
As you will see in future episodes, this business is the point of departure for the startup. That doesn’t mean that we will end up with a company building those robots. Most likely not. This means that we will try this business and see how it works and quickly adapt our ideas if we see that it doesn’t work. So, don’t get too attached to your original startup idea because it is 80% sure to change. But that is the subject of another episode.
Also, you can find contact details in the show notes. Then with nothing else to say, I’ll see you in the next episode with a new lesson from the experts. Until then, keep pushing your ROS learning!
I would like to dedicate this episode to all the ROS Developers that are helping to build ROS a better framework. Not only the ones that are using ROS but the ones that are developing new packages, maintaining existing ones and adding new drivers and dependencies for new robots. If you are one of the ones that contributes to ROS, not only uses it, then this episode is dedicated to you.
But before going into that, let me remind you about our ROS online academy. Yes, at the Construct we have created an online academy named The Robot Ignite Academy which contains a ROS learning path for beginners. The path is composed by:
Of course all our courses are based on practice with simulated robots! (theory+practice)
Let me introduce you Sophia Kolak. Sophia is a software researcher at Carnegie Mellon university. In 2019 she presented a talk at the ROSCON 2019 entitled: It Takes a Village to Build a Robot: An Empirical Study of The ROS Ecosystem Today she is here to talk about her paper and why it matters for all ROS Developers.