FRC at ROSCon 2018

The Zebracorns are proud to announce our presentation at the 2018 ROSCon. As you may know this past year we succeeeded in running full stack ROS on our robot, and we published the following whitepaper describing how we did it and how you can implement it on your own teams https://www.chiefdelphi.com/media/papers/3477
All of our code from that year is available on our github showing how we used ROS in our robot code
https://github.com/FRC900/2018RobotCode

In the early spring of this year we submitted an application to present at this year’s ROSCon in Madrid, Spain. Our application was accepted and on September 30th a few current students and alumni of the Zebracorns gave a talk about ROS and FRC to industry professionals. Our talk can be viewed at https://vimeo.com/293294796 and our slides can be viewed at https://roscon.ros.org/2018/presentations/ROSCon2018_Zebracorns.pdf
You can watch the other presenters talks here https://roscon.ros.org/2018/

We would be happy to answer any questions. Feel free to reach out!

Finally, I would like to thank all of our sponsors for helping us along the way and making all of this possible!

1 Like

I’m crazy proud of my students for this. It’s been one hell of a journey and I know it’s not over with yet, it’s just getting started. I’m glad we were able to attend and made some new friends all over the world in the process.

Especailly The Drop Bears… you all sound like way too much fun.

You all should pay attention to my students and tell them they did awesome. They deserve a hand for traveling to another country and talking about FRC to a room full of industrial roboticists.

ROS isn’t for academics. It’s for industry. Teach the truth.

Thanks Mom

They did. Your team nailed that presentation! I especially liked the Q&A comment that it is OK to implement a good idea before it becomes a requirement.

Good on you for this^, too. I strongly suspect there are more Moms to thank. And some Dads, siblings, aunts and uncles, significant others, etc. Engineers, and particularly those who code, tend to immerse ourselves in projects. We all need to thank the people who sustain us.

Everyone on the presentation team did a great job. I really liked the responses to the Q&A and the whole thing definitely felt like a rather well done conference talk.

I know this is partially answered in 900’s white papers, but can you or your students expand on what ROS brings to a team with maybe only a single programming mentor from non-robotics industry?

Thank you for all the hard work your team is doing. Our students are very interested in attempting to integrate ROS with the Jetson and hopefully within a couple of years we might be able to implement. Please keep us updated on your progress.

So I was hoping my students were going to answer this but since they haven’t (they’re afraid I’m going to say something controversial and bring shame upon my dojo).

So right now, I don’t think ROS is a good fit for most teams who can’t put in the kind of crazy effort we did to make it all work. We’ve done our best to publish resources for how we did it but it’s still early with a lot of this. In fact, Anja answered a similar question at the end of the talk and said something similar.

That being said, FRC teams re-invent the wheel on programming year after year after year after year. It’s sad and frustrating. Wouldn’t it be great if we could define the characteristics of our robot and then just tell it “drive here” or “drive over there” or “pick this thing up”? That’s what ROS can help provide.

The same ROS package that can control an industrial arm from KUKA can also control an industrial arm from Mitsubishi with wildly different characteristics and that same package can control more accessible educational arms from the likes of Robotis or even DIY robotic arms. That’s massively powerful and it’s all just editing a few config files to make it work.

We’re a ways off from having that from FRC but it’s coming and more rapidly than people think. The days of hundred’s of team-created programming frameworks with disparate methodologies are going to be behind us before too long. FRC has largely been a hardware driven sport and I think it will continue to be for some time to come but we’re quickly getting into where it is going to be software driven as the COTS market gets more and more saturated and manufacturing gets easier, faster, and more accessible and the number of solutions to common FRC problems and documentation for those solutions continues to explode. It’s not a coincidence that the CD community complains about the number of pre-season code/CAD releases at the same time that we’re seeing teams adopt GrabCAD, OnShape, GitHub, GitLab, etc at a record pace.

If you think I sound crazy… it’s because I watched 2 high schoolers and 2 college freshman impress the crap out of a room of 400+ roboticists from around the globe after having flown 4000 miles to do it. You know the hallmark of a good technical talk? When people start pulling out phones to take pictures of the slides. That happened. I was on stage for it. I suspect CTRE is about to get some more business.

So what can you do now? Go learn about ROS. The tutorials on the ROS wiki are an awesome place to start and can at least get you going with driving a turtle around your screen. We don’t expect anyone to turn around and use it on their robot this coming season or even the next probably (though who knows, someone might try)… but we do expect to keep pushing for this as we think it is a massive improvement over what we all have now and will enable more sharing and less reinventing of the wheel year after year.

ROS also provides a growth area for students and it makes them instantly employable at the moment. The meme of the conference in just about every presentation except ours was “Yes, we’re hiring”… ROS is being adopted by industry at a crazy fast pace and the next mentor that asks me why we “wasted our time on it and that it is just for academics” is going to get an ear full. This is seriously powerful software and it’s adoption keeps spreading and growing… Microsoft, Toshiba, Apple, Google, and Amazon were all present and talked to our students about internships, jobs, scholarships, and more… and that’s just naming the big ones you’ve probably heard of.

Not to mention, as FRC moves into the software space, we are going to see a bigger push from vendors into that same space and they aren’t all going to be able to work together without an agreed upon format for passing messages between one another. ROS provides a set of standards to do just that and without all the headache that comes from trying to open source all of your code (which, given Digilent’s entrance into the FRC motor controller market, we’re likely to see a bigger push by vendors to close their source even tighter).

I didn’t even get into simulation… NASA is using Gazebo extensively to test out robots in micro-gravity environments… I’m pretty sure it can handle an FRC field.

So yeah, there are a lot of potential benefits to teams who don’t have programming mentor resources… I know it’s hard to believe right now because it seems inaccessible but our aim is to change that over time. We’ll see if we’re eventually successful.

I sort of disagree here, I think it is already a software driven sport.
As recently as 2016 you could have a dumb go forward autonomous mode and still get picked and play on einstein.
This year at CMP we had a 2nd round pick that had a 3 cube switch auto and a 3rd round pick that had a 2 cube switch auto.
Its already impossible to get picked at a competitive level without significant software development.

The tutorials I’ve seen all expect you to be running Ubuntu.
Do these run fine in a virtual machine or do you need to dual boot for optimal results?

Thanks to you and your students to sharing all of this information and focusing on bringing the floor up in FRC.
You inspire us all to contribute more to the community.

They run fine in a VM. The current supported process for 900 students is an Ubuntu VM with a docker container that contains all the cross build tools. Because ROS actually utilizes a fair number of GUI components having a system with X on it works out well. I know of one student that’s running docker on their mac natively and that’s actually what I do.

We’re in the process of cleaning up the docker image so it’s properly layered to support upgrading it (currently if we change the image it’s a multiple GB download)

But for getting started, you don’t need all that and a VM running Ubuntu will work fine. I think there’s also prebuilt images for RPis out there that make an even easier getting started path for folks.

(I’ll leave the debate for if FRC is software dominated to Marshall, the students should make fun of him appropriately for it and that’s amusing)

Software is eating the world. Some of the largest cab companies doesn’t own cabs and the largest hotel company doesn’t own hotels (Uber/Lyft and AirBnB for those playing at home).

The tutorials I’ve seen all expect you to be running Ubuntu.
Do these run fine in a virtual machine or do you need to dual boot for optimal results?

Thanks to you and your students to sharing all of this information and focusing on bringing the floor up in FRC.
You inspire us all to contribute more to the community.

You can 100% run a lot of the basic ROS tutorials from a Ubuntu VM without any issue… in fact our student development environment is docker running inside of a Ubuntu 16.04 VM (typically on VMware Workstation or Fusion). Being that I work for a tiny virtualization company… I have to recommend Workstation or Fusion.

And thank you!

The first time I heard about ROS was back when I was loosely working with a NASA Centennial Challenge rover team and it’s what a lot of teams were using for software in that challenge. More recently I’ve been seeing a lot more chatter about it’s growing adoption and I’ve also seen a vast majority of the job postings in robotics referencing a need for experience with it. I definitely think that in the coming year I’m going to take a look at playing with it some more.

We’re at a point where what we choose to run on our robot software wise is fairly fluid. How long would you say it took you to get the basics running using ROS? I plan on reading your papers/presentations later this week I just haven’t committed the time for it previously.

It took us the season and then some to make it work. Palmetto was a brutal event for us this past year and we did not perform at a level we felt was adequate to say the least. I’m grateful for the multitude of teams that came over to attempt to offer to help us but we were just hitting issues that others couldn’t help with. We were on our own due to the nature of using ROS in FRC right now. The resources just don’t exist yet.

It took us until DCMP to truly make it work well and even then, we’re still adding and tinkering and improving performance now. We’ll have another code release before build season and hopefully some forthcoming updates to the official ROS wiki as well.

Trust me, I want more people to use this but walk into it with eyes wide open. This is an unknown area for FRC right now. There be dragons.

Microsoft announced (at ROSCon) that ROS is coming to Windows. So it’ll get even easier.

if you look at my profile picture a little closer you’ll see that ROS coming to Windows doesn’t help :stuck_out_tongue:

Not coming. It’s here: https://ms-iot.github.io/ROSOnWindows/

We actually met with these guys at ROSCon and we’re hoping we can run this alongside the DS this year. We’re experimenting with it now.

Marshall is forgetting the growing pains we had in the previous season as well. Programming details aside, it takes a little bit of time to wrap your head around the concepts. Luckily we had some motivated students willing to beat on it in the background as we also worked on getting our comp robot software running.

As has been mentioned, though, you can work through those concepts using the tutorials on the wiki in a standard Ubuntu install, no FRC anything required. Once (if) you feel reasonably comfortable with that, then start looking at the FRC specific stuff we did. We think it has been worthwhile, but there’s no doubt that there is some pain between here and there.

Windows VM image running on mac. Inside the VM image run a Ubuntu container running ROS. Should be straightforward :slight_smile:

ETA - or for real, try one of the options here : https://hub.docker.com/_/ros/. Kinetic is stable, melodic is stable but newer so possibly not as stable.

If I recall correctly in fact ROS has been on windows (albeit in a limited and less supported way) for a while now. I remember coming across it when I was first learning about ROS 3 or 4 years ago. It is great it is coming to windows in a more official state though!

Preemptive correction:
I did some quick research, turns out I remembered ROS could run on my default operating system, at the time OSX experimentally. Though it also turns out there were also experimental methods to run it on windows on versions predating my research.