ROS 2021: intimidating and unfriendly
ROS on Windows is a needlessly difficult process. Read on for tips and thoughts.
For added fun, make it a drinking game! Every time something seems stupid, if it makes you lol, if you breath extra hard through your nose, or shake your head, take a sip. Maybe bring the whole bottle because you will be refilling and quite drunk by the end.
Installing ROS
The first place to go is https://www.ros.org/install/ . I chose “Get ROS Foxy Fitzroy on Ubuntu Linux, macOS, or Windows 10”, which leads to https://docs.ros.org/en/foxy/Installation.html . Already I’m having my doubts – where any other program would just download a windows installed and do the job, this thing wants you to start reading install documentation. I chose Binary Packages > Windows, because maybe it’s just one more click away. Nope!
The installer that should do all of that doesn’t exist? FINE, I’ll do it myself.
So how bad is installing Chocolatey?
Take a moment to find the install button. Notice how they seem to care more about why you should install than getting you installed. This is because they need you to really want it so that you will fight through the next steps, a masterpiece of understated comedy.
The average person has already said “nope” and quit. But I’m in it for the lulz, I guess, so let’s see. I guess I’m an individual, so let’s pop open that administrative shell… Lenovo has a howto … and disable security on my Windows to get this thing in, always a good idea…
5. If you don’t see any errors, you are ready to use Chocolatey! Type
choco
orchoco -?
now, or see Getting Started for usage instructions.
What does “no errors” look like?
So friendly! Now keep that powershell open because the next steps (remember, the next steps? We were installing ROS) will want it.
Install Python and Visual C++ Redistributables
Actually, this was copy + paste + wait and not terrible. Not great, but not painful. Leave that powershell open for later.
Installing OpenSSL
The instructions are clear, here. The page I’m sent to looks like Geocities 1995. It looks like the emails Rachel in marketing sends, reply all, marked important. Super trustworthy.
I’ve highlighted the link you’re looking for. Finally! A real installer! Wow! I bet when that was built they felt ahead of their time. Anyways, now it’s back to the ROS install steps. Which one are we on now, 203? 206?
But wait, there’s more!
Oh, apparently OpenSSL doesn’t install everything it should because reasons. They say I have to add something to the PATH variable, which is the Windows version of a vestigial organ, like a hindbrain or an appendix.
Leave this window open because we’ll be back!
Install Visual Studio 2019
Well…. no. I already have Visual Studio Code, which has a ROS extension.
Why do they call it visual studio? There’s no Auditory Studio. there’s no Tactile Studio. It doesn’t let me edit pictures, I can’t even embed meme gifs as method names. What marketing team came up with this? Was it the least garbage name still available?
Install additional DDS implementations (optional)
Since I have no idea what this means, I’m skipping it. A single sentence explanation would have been nice.
Install OpenCV and dependencies
Apparently OpenCV isn’t strictly necessary, and I’ll err on the side of caution and put it in anyways.
Next they want me to install cmake. So I’m using one installer to install another installer because nobody wants to play nice with a Windows installer. It’s starting to feel like robotics is hard because somebody wants it to be hard.
What’s next?
Please download these packages from this GitHub repository.
– asio.1.12.1.nupkg
– bullet.2.89.0.nupkg
– cunit.2.1.3.nupkg
– eigen-3.3.4.nupkg
– tinyxml-usestl.2.6.2.nupkg
– tinyxml2.6.0.0.nupkg
– log4cxx.0.10.0.nupkg
The page at the link has eight packages and you only need seven. Also the “download source” will not help you get all of them in a single click, because that would be against the ethos. That being the ethos set by people fired from the department of motor vehicles for being too frustrating.
Python problems
The instructions say to use powershell and paste this:
python -m pip install -U catkin_pkg cryptography empy ifcfg lark-parser lxml netifaces numpy opencv-python pyparsing pyyaml setuptools rosdistro
python cannot be found because it is not in the PATH variable. Rather than touch PATH again, I changed the start of the line to say c:\phython38\python -m… which worked better. And by better I mean a screaming red page of angry text.
Oh, so all of that was caused because something called pip was out of date? Why wasn’t it upgraded to the latest when I installed? I have to do it manually? Fine. c:\python38\python -m pip install –upgrade pip. After that I was able to run the previous command again and get a full install. Note that there were warnings in white text mixed into the other no-problem white text. If you don’t see the warnings do you have to worry about them?
Back to dependencies
“You agreed to having a pineapple put up your butt, but now I need you to confirm you also want lube.”
I hope you still have that PATH editor open, coz you still need it here! The instructions say I need to add C:\Program Files (x86)\GraphvizX.XX\bin and the powershell chocolatey said it installed to C:\Program Files\Graphviz\bin. I did the second one.
Downloading ROS 2
Remember ROS? We were installing ROS. Apparently we’ve made it through the desert and reached mount Sinai.
It is normal that the previous command, if nothing else went wrong, outputs “The system cannot find the path specified.” exactly once.
Well, about that.
So… the thing that was optional wasn’t actually? Hm. Well, the next step says to run demos and they don’t work. The step after that says Troubleshooting so I’ll just click o-oooooh wait a second, what is this?
This whole time it could have been
- install chocolately
- make chocolately install ROS.
- C:\dev\ros2_foxy\local_setup.bat
?
Nope.
Although the earlier steps failed and the alternative ROS 2 build instructions worked, the demos fail to run. They say run these commands in two separate powershells:
- ros2 run demo_nodes_cpp talker
- ros2 run demo_nodes_py listener
Do they work? No. “ros2” does not exist on the system. “ros2.*” cannot be found anywhere in the c:\opt folder.