Josh your methodical walking through of these practical aspects of building a robot is invaluable, and so well thought through and communicated. I just burned a bunch of hours trying to deploy my nodes as a service, or a cron job, something, and boom! You come through with the solution and the dots connected. Keep up the great work.
@ArticulatedRobotics Жыл бұрын
Thanks - I love that feeling when it all comes together!
@michaelschafer75927 ай бұрын
great video as always! quick note, the ROS IRON image contains already the entrypoint and bashrc files, so no need to create them again :)
@laupetre Жыл бұрын
I love this series! I'd love to see the VS Code Dev Containers first, but i think that Docker Compose might be of most interest to the widest audience. Really love your teaching style!
@ArticulatedRobotics Жыл бұрын
Thank you, I appreciate the feedback!
@Must23 Жыл бұрын
Again, this should be not free haha, honestly thank you for giving the most best quality, to the point tutorial and I hope everyone in the youtube follows your style~! I even checked the ads
@ArticulatedRobotics Жыл бұрын
Thank you!!
@divelix2666 Жыл бұрын
21:50 - you can pass `echo "source /opt/ros/$ROS_DISTRO/setup.bash" >> /root/.bashrc` to your RUN command inside Dockerfile (it works, I do it all the time).
@stephenzuccaro10902 ай бұрын
I’m subscribing because you have done an amazing job on this series!!
@adamwatts16 Жыл бұрын
Fantastic series, as is all of your content! I'm a relatively recent convert to using Docker for ROS (Thanks to Allison for the super helpful containers). I'm starting to run into scenarios where I am running different version of ROS concurrently in different containers which I believe would be a good candidate for using Docker Compose to elegantly bring up all of my nodes, it would be great if you could cover this at some point in the series 😊
@ArticulatedRobotics Жыл бұрын
Thanks! And yep, I definitely will!
@Hanschanhs Жыл бұрын
Continues to be a fantastic series! Great content. Particularly eager to see how to properly get CUDA working in a ros humble container, especially in the context of jetson devices. Extremely relevant as we see more gpu accelerated CV running on autonomous systems.
@ArticulatedRobotics Жыл бұрын
Thanks, yes I'm keen to get to that!
@SeattleShelby Жыл бұрын
This is the reason I don’t use Docker for ROS. It’s much easier to pass hardware through in a virtualized Ubuntu environment. Also, if you have a decent VM Manager, then you get all the same deployment advantages that you get from Docker.
@JReinhoud6 ай бұрын
Maybe a little late, but have a look at Nvidia Isaac Ros. Its a Humble image with cuda optimizations, Jetson ready.
@giorgegi4060 Жыл бұрын
What an informative video, it was worth the wait. I really liked how well the construction of the docker file was presented as well as the entry point script. I'll also try out X11 for GUI applications since I've been using Xauthority for a while. I am also very interested about GPU acceleration, since my computer's CPU isn't strong enough to handle the demanding GUI tools like RViz and ignition gazebo
@ArticulatedRobotics Жыл бұрын
Thanks! And yes I've come across the Xauthority thing before but not used it - I believe it is an alternative to using "xhost +". It can be better for some scenarios but has a couple of "gotchas" if you're not careful.
@JReinhoud6 ай бұрын
I expected to learn alot about Ros in Docker, instead I learned alot about Ros, Docker, Linux and Windows in general.
@BananenBrot1147 ай бұрын
If you use the bashrc approach should you not remove the source ros installation statement from the entrypoint.sh? now the ros installation is sourced in two different places: once in entrypoint.sh and another time in the bashrc. Is there any reason why the file is sourced twice iso once? seems to me it would reduce complexity. Also having a (potentially) different environment when executing commands vs opening an iteractive terminal could be frustrating when debugging. To get it to work I had to change the docker file ENTRYPOINT ["/bin/bash", "-l", "/entrypoint.sh"] -l to make bash act like it is launched as a login shell. Does this have any downsides you know of?
@messedmushroom Жыл бұрын
Love seeing new vids from this channel
@santiagoperez67693 ай бұрын
Hey Josh... I'm lovin' the Articulated Robotics channel, especially this docker series! Fundamentals are instrumental in every domain, imo, so getting a good grasp on the development environment (dev env) is very underrated... you could do an entire college course on docker for robotics. (And we would love it if you did! lol) I noticed that you usually run Ubuntu, and I have a quick question regarding that. When developing robotics applications with Docker on Raspberry Pi, would you suggest using Ubuntu instead of Debian? If you have no preference, then can you help me figure out if I am making development harder for myself with my headless setup? I am having trouble getting a USB camera working. I am trying to run computer vision scripts with it, however, headless seems to be making things more complex because, with this setup, I have to forward the Pi's video feed.
@orim7734 Жыл бұрын
Amazing tutorial! it would be awesome if you show how to run the simulation / realrobot using docker. for example, run the robot on jetson nano(instead of Pi) with docker
@SanjeevKumar-nm7ps Жыл бұрын
You're the Best Teacher ❤. Love your content
@ArticulatedRobotics Жыл бұрын
Thanks!
@SattwikSahuIISERB5 ай бұрын
Hi, on running `rqt` in the container I get the following error: could not connect to display :0 This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem. Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb. --- Could you please help me out with this?
@prakrit82843 ай бұрын
This was valuable. Thanks Josh
@Cian-_- Жыл бұрын
I'm using MacOS Big Sur, and I want to use docker specifically for ROS. Are there any differences between using Linux and other operating systems that we should look out for?
@yehiamoustafa9801 Жыл бұрын
Hello, thank you very much for this wonderful playlist I have a question, I tried to make the container with GUI like you did but it didn't work until I used --privileged so why do I need to use it as it is a security risk? Thanks in advance
@g.s.3389 Жыл бұрын
amazing series I cannot wait for part 4 :)
@awosog57 Жыл бұрын
Hey Josh, Enjoy your tutorials . Is there any way you can make one on micro ros? Could micro ros be used in foxy or is it only for humble? I'm using a jetson orin nano. Do you know of an alternative? Thank you
@gigiipaq8172 Жыл бұрын
Thank you for your video, you are the best. Do you have any plans to add an IMU to your robot? I am struggling to fuse odom and imu to correct the wheel slippery.
@ArticulatedRobotics Жыл бұрын
Thanks! I hadn't really planned to add an IMU to that mobile robot as I don't believe it would provide much benefit (for me the wheel odometry would be better than gyro integration and magnetometers can be a pain). However it is definitely on my list to cover IMUs in ROS - either in a robot that really needs it (e.g. a balancing robot) or in a localisation system as you say, probably fused with GPS on an outdoor robot. Either way - definitely on the to do list but a long way off.
@happyhayot Жыл бұрын
I saw your videos just in time while I was having trouble interfacing Matlab and Gazebo. I had a problem with this, since Matlab 2023 has a version requirement for glibc which is higher than Ubuntu 20 system's version. Moreover, the gazebo libraries and tutorials they have are only supported for ROS Noetic in Ubuntu 20. I upgraded to Ubuntu 22, and created a docker image with ROS Noetic, and after some work, I could follow Matlab's tutorial (though it runs fairly slow on my laptop). Do you have any experience interfacing Matlab and ROS? Are there better solutions to this? Thanks for your videos btw, they're awesome!
@Key_Capz_ Жыл бұрын
Nice, wouldn't it be easier to use the host's programs without installing everything in the container? Or is there no way around that?
@NisathHussain-v7o11 ай бұрын
I am trying to run foxy on docker but the same code used here shows error when I run them using foxy-desktop / foxy-desktop-focal instead of humble-desktop-full in the docker file. Could anyone help out with this?
@loganndayАй бұрын
Amazing video king
@PCBWay Жыл бұрын
Nice presentation!
@vipulpardeshi286811 ай бұрын
rviz not found
@Must23 Жыл бұрын
Please advice if it's suitable and a good practice to develop some project inside the docker? Is it better to build and develop in our primary OS then test it on the docker? at the end of the video ou mentioned something about installing important tools in the container but that means, we will not only testing it on the docker but actually build n dev inside it? Thank you.
@ArticulatedRobotics Жыл бұрын
Yep I'll be touching more on this in a later video :) The short version is yes, having tools inside Docker can be very useful. Some people actually like to have two versions of their image, one for development that has all the tools, and one for production that has only the bare essentials. Some simple examples: Compiler - since you are compiling to have it run inside the container, you want the compiler to be in the image IDE - Historically, you'd have the IDE on your host and mount the files inside the container, but this means you can't build with the IDE etc. VS Code fixes this which is what the video will be about. Hex editor - Say you want to inspect some data generated by your software. If it's on a mount you can use a tool on the host, but if it's going to some random directory inside the container, you NEED the tool to be in the container to be able to inspect it. Hope that helps :)
@Must23 Жыл бұрын
@@ArticulatedRobotics Thank you so much, honestly you are the best, I will support you on the Patreon~!
@pateco313 Жыл бұрын
how about apt install auto-complete?
@codewithemmaprime Жыл бұрын
I have been waiting for ages 😢😢
@theintegratorZ3 күн бұрын
display doesn't work on mac m1. can anyone please help?
@AbdulAhad-eg3se Жыл бұрын
Why do I keep getting permission denied when I create something using user 'ros'
@harikrishnanm9380 Жыл бұрын
/$ rviz2 QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-ros' Unable to create glx visual Can someone help me with this issue (im running on jetson nano)
@prithvijai946 Жыл бұрын
add and check 21:13 commands while running
@mikekopack6441 Жыл бұрын
Did I miss something? Where's Part 2??? I don't see it listed anywhere... Are we doing the Underpants Nomes approach here? Step 1: Use docker. Step 2: ???? Step 3: Profit! :)
@nikhiltaiwade3478 Жыл бұрын
Might be this kzbin.info/www/bejne/iXKwgYKBlNGUsNksi=82tkCKNjyc9theRJ
@davidfarning8246 Жыл бұрын
kzbin.info/www/bejne/iXKwgYKBlNGUsNk
@indian_fan1759 Жыл бұрын
DOCKER101 is part 2
@mikekopack6441 Жыл бұрын
@@indian_fan1759 ah I was expecting something named part 2
@ArticulatedRobotics Жыл бұрын
Yeah sorry Mike, I've been playing it a bit fast and loose with the naming to try and see what works better - most of these Docker videos haven't been performing too well so I guess I haven't really figured it out haha!
@farzadsw Жыл бұрын
Awesome video 👍
@ArticulatedRobotics Жыл бұрын
Thanks!
@alexCh-ln2gw9 ай бұрын
So my target platform, the raspberry pi 4, won't work with any of these tutorials because raspberry pi 4 is arm64 and all of the docker images from this series are amd64. Even if you buildx to target arm64 things will simply fail. Docker doesn't solve ANY of the platform compatibility issues. OSRF doesn't provide arm64 images for the arm64 raspberry pi platform and the garbage of interoperability in the linux community is destroying any sort of adoption for ROS2. ended spending hours and hours creating a custom docker image and wasting too much time waiting for layers to build because i changed one small thing/ordering of something.
@sy-gb1xf8 ай бұрын
facing same issue also, im using jetson nano which is also arm64. may i know what is ur solution?
@JReinhoud6 ай бұрын
@@sy-gb1xf Nvidia Isaac Ros docker image
@ChunHoKong-y2z7 ай бұрын
I added the following line in my Dockerfile (I'm using ROS humble): ENV PATH="/opt/ros/humble:$PATH" I got the idea when I was using python venv in docker. Not sure if this is better or not.
@JanDustinTengdyantono11 ай бұрын
Hi, I am finishing the adding a new user section. Which I want to build the image now. Nonetheless, I think since I am using Raspberry Pi (I ssh to it), I managed to do the previous build in the previous video, nonetheless, if I am using osrf/ros:humble-desktop-full, my RUN apt-get update && apt-get install -y nano && rm -rf /var/lib/apt/lists/* line failed to execute ERROR [2/3] RUN apt-get update && apt-get install -y nano && rm -rf /var/lib/apt/lists/* 1.8s ------ > [2/3] RUN apt-get update && apt-get install -y nano && rm -rf /var/lib/apt/lists/*: 1.052 exec /bin/sh: exec format error I have triple checked that there are no syntax error on it. Can we do it some other way?
@JanDustinTengdyantono11 ай бұрын
I tried it on my WSL, now it works
@evanhiatt97559 ай бұрын
What is WSL? I am stuck on the same part?
@evanhiatt97559 ай бұрын
Nevermind. It was just that the osrf/ros:humble-desktop-full isn't for arm based processors. So I have to find one that is compatible with arm.