Winning team story: The ups and downs of building a drilling robot for the Airbus Shopfloor Challenge
Felix von Drigalski, leader for Team NAIST, tells us about their robot design, unforeseen challenges, and working together to find a solution to prepare for the Airbus Shopfloor Challenge at ICRA in Stockholm, Sweden.
How did you come up with initial robot concept?
When we started talking about the contest back in January, I had the basic idea in my head fairly quickly: something that would make contact with the plate to stabilize the drill. The main inspiration was taken from the intuitive experience that it is hard to hold a position with an outstretched arm. Humans solve this problem by resting their hand when performing precision tasks such as writing, so we carried this idea over to the robot.
In mechanical terms, resting your hand reduces the amount of load-bearing structure between your tool and the workpiece. The kinematic chain is shorter and the flow of forces more direct. As such, there are fewer things that can vibrate and the stiffness is higher. And we knew that high stiffness would be key to drilling quality holes.
Further, to keep with the analogy, resting your hand while writing almost removes your arm from the process. You write with your hand, and not your arm. Similarly, in our solution the function “Drilling” would be fulfilled by the end effector, and the function “Positioning” only by the arm. If there is one thing that remains firmly hammered into my head after my engineering classes, it’s separation of function.
With our design goal formulated, we soon converged on the three-pronged frame with a separate pneumatic actuator. Instead of having all the motors in the robot arm actively compensate for the forces from the drilling, the end effector would transmit them right back to the workpiece and the arm would do nothing but move the end effector and hold it in place.
In our final design, the robot applies force during the drilling process to keep the end effector stationary. Ideally though, the robot would only be responsible for positioning. We were planning to take the next step to transfer the load off the robot and onto the end effector and the workpiece, but sadly, could not get the necessary parts to Japan in time, and simplified the idea in late April.
Everything else was mostly decided in order of simplicity. We already had the robot arm and small powerful cameras in the lab, so it was clear we would use that. A lot of the code originally comes from our research projects, that we tried to stay close to (for example, the vision system is repurposed eye-tracking code).
As an anecdote: another of the original ideas was to fine-tune the position of the drill by using the end effector. We were basically thinking of using a whole robot hand to adjust the position of the drill. However, unless the robot cannot ensure the positioning on its own, there is no advantage to adding that functionality to the end effector, so we dropped it in favor of the fixed rods with springs (rubber) on the feet. Just another lesson to be learned from Separation Of Function, the benevolent goddess of good design!
What sort of prep work went into the project prior to the competition?
After fleshing out the main idea between January and March, we decided to go for it and write a solid application. We spent a long weekend 3D printing a proof-of-concept, cutting together this flashy video and writing our application in research paper format — since that’s what grad students do. When we got the OK from Airbus to compete on March 27, I doubt we realized how much time would be spent on the project until we started our weekly meetings with our Airbus contact.
It turned out that our biggest problem was logistics. I would estimate a good 40% of our time was spent calling the airport, customs, shipping companies, university offices, and insurance companies for quotes and details about how to get our robot from Japan to Sweden. Shipping would take a whole week, a visiting PhD student needed the robot for his experiments, and with us having to work with the robot before the contest, we had to think creatively and find a workable solution fast.
The biggest issue was that our robot weighed 31 kg on its own, and no single piece of luggage can be over 32 kg in European airports. This left us just 1 kg to package the robot safely. In the end, we made a custom box by cutting a robot-shaped hole into boards of styrofoam with a soldering iron and gluing them together. We even sewed a bag for it.
This is a good moment to remember that this robot arm is easily worth $80,000!
With all the logistics issues, long delivery times, and Golden Week (a string of closely-packed public holidays in Japan) delaying them even more, the time we had to prepare the solution got shorter and shorter. We had parts arriving until the last week before we left, so we had to put everything together in a hurry. We ran the first full trial before the competition on Saturday morning, the day of our flight! It was ridiculously last minute.
Thinking of prep work: we needed our robot at different heights when the plate was inclined, but I designed our stand for the wrong height! I spent almost two months under the completely unfounded misconception that the plate would be inclined by 15° instead of 30°. This is why our stand looks completely different each round and why we had a new mechanical design problem to solve each time. As if that weren’t enough, we misread the distance between the rails and were off by 50 mm. This is why the stand always looks like a mess, on top of everything else!
What was it like competing with your robot? What have you learned in the manic process? Anything you’d do differently?
When we arrived with our limited preparation on Monday to set up the robot and saw the other teams, we didn’t have high hopes. Everyone looked so well-prepared and primed to win. At that point, we just wanted to deliver something solid and keep our heads held high. We freaked out at the thought of not making it through the demo round, so we dragged the robot back to the hotel and stayed up all night to make sure we would get into the contest.
After passing the demo round (with a bug that inverted our hole pattern; look closely at the interview video), we were so happy that we were actually drilling real holes in a real plate that we just kept drilling all through the first round, almost blind. We didn’t have a good way to recalibrate on the fly that day, so we had to accept that our positioning would be off and hope for the best. In fact, our holes were so far off the mark that two thirds of them gave us negative points and we got a terrible score. However, one of the judges said that the calibration was basically the only problem we had — the holes themselves were “absolutely perfect”. That made us perk up.
We had a look at the other plates. Everyone was having more problems with the drilling than we thought. Most were applying force on the drill by moving their robot arm, and the quality of their holes were suffering because of it. Our drilling process was by far the fastest and cleanest. My design worked. It really was only a problem of calibration and our code. That was the moment we gained hope and decided to take the robot back to the hotel for another grueling night of work.
The next day, we paid for our sleep deprivation: we spent the first half hour of round 2 with the robot not moving at all, until we figured out that we never put all the things we fixed during the night into our live code. After we finally did and finished the round with barely half the plate’s holes drilled, we thought we may well have missed our shot at entering the final. However, we absolutely wanted to prove to ourselves that we could at least properly drill a whole set and take a picture of it home, so we were hoping for a chance to maybe perform on a plate separately from the contest, if it came to that. When all the team leaders were informed that the last round would be between 4 teams and we were in it, I was the first to rush out of the room and prepare (and accidentally spill the news to the neighboring and positively amazing team from India, who were the only ones to drop out that round).
In the end, we had more arcane bugs to sort out during the final and we didn’t get to drill through the entire hole pattern like we hoped. The first 10 minutes we weren’t drilling anything at all, and it was only during the last 20 minutes that we really were on point and drilling at (almost) full speed. It was also the first time I had the time to stand back and talk to spectators about what we were doing. Which is when our drill bit got sucked into the clamp with 3 minutes on the clock. Ah well, things never go as planned. We still managed to drill three more holes, although sadly not the damaged one the bit got stuck on. All of that stress fell off our shoulders when the round was called, and we could turn our attention to celebrate everything and everyone who powered through along with us.
All in all, the competition was a blast! Constant adrenaline in an incredible atmosphere. Probably the best thing was that there was not a shred of negativity anywhere, all of the teams were supportive of everyone’s efforts. Team Sirado even helped us troubleshoot KUKA software we had been struggling to install on our virtual machine the day before the competition! Everyone was simply great! Airbus made an excellent choice putting the celebration right after the final round instead of the awards. That allowed us to celebrate everyone’s efforts rather than our scores.
It was also an incomparable team-building experience. Although we had some stressful moments when our robot did not run in the second round, no one cracked or became emotional or accusatory — everyone stayed laser sharp and focused on solving the problem. We could not have done it without a heavy dose of team spirit.
In all that chaos, we learned our lessons about project planning and software development. Probably the worst mistake we made was working on the same code on multiple machines, with multiple sleep deprived people during the night, then trying to merge all those changes. To illustrate: There is a comment in our code history from 6 AM on Tuesday morning that just reads “only a miracle can save us” (the first day of the contest!!), and our live branch is called “last-minute-firebrigade”. You can imagine the state we were in!
What advice would you give to any future robotic challengers out there?
I relay these from the team:
- Do not underestimate logistics!
- Don’t rely exclusively on software, robust hardware design is key!
- Just try and have fun, don’t think it’s impossible without even trying!
And I would stress how much trying is worth it, no matter what. Winning is great and all, but it was just after the final, after close to 60 hours with almost no sleep and all of our holes drilled, that we felt the most relieved and accomplished. We didn’t spend a second thinking about scores or placements — we were just proud that we made something that worked, and we didn’t give up. Thinking up and developing your own solution, working together and seeing it come to life is one of the most satisfying and fulfilling experiences. Making your performance and efforts your motivation, rather than winning, will keep you going when things look dire.
Any closing words?
After the event, we kept getting amused comments about not having Japanese members in our Japanese team. It’s true we come from Germany, Mexico, Belgium and Ecuador, but studying and living in Japan has changed all of us in ways that we sometimes don’t even realize, as anyone who has left home to go abroad understands. As such, we have always said that our team consists of 4 people with 5 nationalities — just no one with a Japanese passport.
So, for the big closing words: If you’re an aspiring youngster reading this and you want to see the world, or if you’re in your undergrad and thinking of going on an exchange, or if you dream of living somewhere else — go for it! Every journey starts with the first step, and it is worth it.
Like this story? Read more about the Airbus Shopfloor Challenge here.