ROSAcademy / ros.academy.ai

1 stars 0 forks source link

Docker: What topics shall we cover? #1

Open s-t-e-p-h-e-n opened 8 years ago

s-t-e-p-h-e-n commented 8 years ago

[I'll edit this once we start reaching consensus]

s-t-e-p-h-e-n commented 8 years ago

Do we need to cover the Docker basics or is there already very good resources we can direct people to?

The rest of the series will be built on-top of Docker so this section should leave people feeling pretty confident about using it, but not to the point that it's boring (to read or write) or overly complex.

To use Docker effectively at a minimum you'd need to understand:

Then there's the slightly more advanced topics, e.g. networking.

There's whole books written about all of that, which makes me more inclined to link to the best available resources for the basics while we perhaps rush through the essentials and then focus on highlighting the ways in which Docker is particularly useful for ROS, e.g.:

Basically, the stuff you covered in your roscon talk but hopefully we'll have space to go into a little more detail.

@ruffsl: What do you think? Also, do you happen to know of any particularly good docker guides that cover the basics?

ruffsl commented 8 years ago

To get to your first point, I recall an great interactive "try it out" web based docker tutorial that was up on the official docker website not to long ago. It seems to have been mover else where, and I haven't been able to find it's new resting place. You can still use it through the internet archive here, albeit quite broken.

The official docker docs are quite good, but perhaps more detailed than necessary. I'd suggest perhaps the self-paced training to warm up with, then come back to our tutorials. From there we could take a convention to always linking to the docs of a command or feature the first time it appears or is used, and try and keep any redundant info to a min, relying on just writing ROS specific context and incite.

Do you have an idea for the order of the entry level topics to cover, a sort of story where the first topic motivates the next. I was thinking later for the higher lever topics, we could go in the direction I started in the wiki tutorials. Learning docker network would enable multiple containers, motivating docker-compose to automate the bootstrapping of the startup, enabling the easy deployment on other machines, with docker-machine you could start and interact with new machines, but with using swarm you could interact with multiple machines. A sort of branching level of scaling up. I'm not sure of an specific example application we could tie into each topic to motivate a ROS agenda (a sort of project that ties it all together, like some kind of start to finish ROS app), but perhaps we could break up the highlights you mentioned into each section.

Maybe something using the gazebo or gzweb image, like making a ROS app out of multiple containers, with conflicting dependencies/distros, that is first tested in simulation on gazebo, then push to dockerhub where robots fetch the new images, and run on real hardware. I've been meaning to make something like continuous integration process for SLAM for a while now.

s-t-e-p-h-e-n commented 8 years ago

I went through those videos (good but could be more exciting), the Docker docs (good but more detailed than I'd like for beginners) and a bunch of other stuff I've google'd (I always like seeing someone that created something explaining it, so I quite like this video); with all that good content out there I think it would be silly to remake any of it and I really like your idea of linking out the first time something's used. As long as we do a good job of selling the benefits of Docker for ROS first and then link to good resources, I'm sure people will be interested in spending a little time & effort learning Docker.

For the entry-level topics, if we state very clearly that we expect people to work through the stuff that we link to if they want to understand what's going on then we shouldn't really have much to cover; once you know Docker, doing basic ROS stuff with Docker is pretty simple. Even if we try to space things out with each exercise building upon the last, there still shouldn't be too many exercises. Perhaps something along the lines of:

  1. Benefits of ROS on Docker [I'm thinking we could maybe also do a short video overview, as a lot of the cool aspects of ROS on Docker might be more fun that way vs. text + images]
  2. Succinct but somewhat-comprehensive overview/summary of Docker with appropriate links to external resources
  3. Talker/Listener demo (to make sure the basics are working)
  4. Something with rviz / gazebo / whatever (to make sure OpenGL is working)
  5. Building your own ROS containers (maybe simulate a robot that needs a few extra packages installed)

Hmm... I'm not sure if there's much to add to that list before getting to the higher-level topics?

For the higher-level stuff, something like that kind of progression sounds great. I'd really like to cover the aspects of ROS on Docker that would appeal to people most; I'm not sure exactly what they would be so maybe we should ask around a little (you might already know better than me), but I imagine being able to simulate multiple robots that require different versions of ROS/Ubuntu would catch people's attention. Reproducibility is a big factor for me, but I guess we'll be demonstrating that throughout. But yeah, if we could tie some of the higher-level progressions together that would be great. I really like the idea of using gzweb through a browser on their host OS as I think that gives a pretty interesting overview of what's possible.

I don't think I've mentioned so far: throughout the whole series I would like to focus as much as possible on simulation, rather than requiring any specific hardware. I don't think that means there should be zero hardware-specific content, but I'd like to find a way to demonstrate as much as possible in such a way that everyone can take part even if they don't own a physical robot. What do you think?

ruffsl commented 8 years ago

Hey @s-t-e-p-h-e-n , just got done traveling, didn't have as much time as I thought.

The numbered outline you mention above looks great. You're right, I don't think there needs to be much more, so let start with this.

Focus on simulation is fine with me. By the way, I think we could do something with gzweb before #4) while we wait for nvidia to resolve the OpenGL issue, and I try out the other graphics hardware. We could also still use any GUI that don't require hardware acceleration before of course.

Once we have a working implementation for each outline, I agree making a promo video would be great. I made a small video on how I recorded mine for future reference. Is there going to be accompanying material in the repo, like the Docker and compose files, I guess there would be a directory/chapter hierarchy?

If you would generate the folder/file with a simple outline for each page, I could then start a PR with some Dockerfiles and scripts and what not for each chapter.

s-t-e-p-h-e-n commented 8 years ago

No worries, hope you had a good thanksgiving :smiley:

I'm a little concerned about using gzweb over gazebo too much as I'd like to stick as much as possible with the default setup / standard practices, but as a workaround sounds good (and for teaching Docker concepts). Anyway, it's so cool I think people would be excited to play around with it.

I watched your video, helpful for me as I haven't made demos on linux before. I call my box eve too :stuck_out_tongue_winking_eye:

Yeah there will definitely be additional material and probably a typical directory structure; I haven't thought enough about it yet to say whether it should be in its own repo or not but yeah I'll put something together. I'm preoccupied with a project I'm trying to get finished but I want to get on with this so I'll get the other stuff out the way asap!

ruffsl commented 8 years ago

Haha, I really liked the movie WALL-E, and thought eve was a great name for that robot. All of our machines in the lab are named after robots from movies and SciFi literature.