menu
announcement

Spectrum is now read-only. Learn more about the decision in our official announcement.

MuSHR

MuSHR is an open-source robotics platform for learning and researching AI with autonomous vehicles.

Channels
Team

ROS Noetic

September 5, 2020 at 9:08pm
Can ROS Noetic be used instead of ROS Melodic?
What's nice about ROS Noetic is that it targets Python 3. I have read ROS Melodic's dependency on Python 2 makes Tensorflow not usable, although I'm not that far yet to be trying it. Many libraries require Python 3 and I feel like this is going to be a roadblock for some development work (please correct me if I am wrong).
There are I think two ways of using ROS Noetic with the Jetson devices:
  1. Load the Jetpack image with Ubuntu 18.04, upgrade Ubuntu to 20.04 and then install ROS Noetic normally. While NVIDIA technically doesn't support this yet, people say it works with Jetpack 4.3 and I think 4.4.
  2. Build ROS Noetic from source for Ubuntu 18.04. ROS has some instructions for doing this, although there is one part that's confusing which is it says do not install the build into opt/ros/noetic on Ubuntu, yet that's where everyone seems to install it. NVIDIA rep provided a Dockerfile to do it, and he is installing it there too.
Any thoughts on this?

September 6, 2020 at 11:02am
I tried Noetic without much success a while ago (back in May) and didn't want to spend too much time being distracted on fixing stability issues and waiting on dependent libraries yet to be upgraded/tested etc for Noetic - when my main aim was to test my research hypotheses - not fix bugs. So I've downgraded to Melodic for now. That said, I'm happy to support your efforts if this is something that the group as a whole thinks is achievable - as agree it would be best if we were on all the latest version.
like-fill
1
Yes, the python2/Melodic problem has been quite a pain for us. Before noetic we were on the fence about ROS2 but decided that it would be a large headache with its lack of package support. So I think transitioning to noetic would solve a lot of painpoints for people, especially with ML packages that depend on python3. (droemer) I think option 1. is the better option as I trust ubuntu to be more stable than ROS. This is something we should look into, but if you need python3 now, I wouldn't wait for us to update with a noetic mushr image. It will take us time to properly check the entire system and make sure it is stable for release.
like-fill
1
(matt-schmittle) Thanks for the input. That's what I was thinking. I looked into ROS2 some time ago as well and came to a similar conclusion. I got started on option (1) yesterday for a sim VM (I am guessing like you that option (1) is better), but I've got a ways to go. I'm still building the car, waiting for some things to be delivered, learning ROS, etc. I'll keep you all informed if I get it working or encounter issues.
like-fill
1
(sentinelgeospatial) For sure if you have a paper to deliver on, don't go too far down the rabbit hole. I'll work on it, and appreciate the willingness to help. Back in May Noetic was brand new so I'm crossing my fingers that the bigger issues have been sorted out since then. Fortunately I'm doing this out of personal interest so I don't have any deadlines.

October 7, 2020 at 4:26am
(matt-schmittle) I've been working on this the past couple days, but need some help troubleshooting.
With Ubuntu 20.04/Focal, I've installed ROS Noetic and what's needed for the MuSHR sim on a clean VM, but when trying to run the MuSHR sim with teleop, I run into the issue that the Python scripts are using 2.7. The problem with this is it requires Python 2 packages that are not available in Focal - even pip itself is not available in Focal (only pip3). I guess all of these Python 2 dependencies could be built from source but I haven't gone down that rabbit hole yet. Should I?
Instead, I made some simple modifications to accommodate Python 3. First, I installed range_libc with python3 (3.8) instead of python (this required 'fixing' the setup.py file, but turned out to be easy). Next, I changed the shebang line to #!/usr/bin/env python3 in the relevant .py files for the sim, and then launched the sim normally. The launch seems OK, but I'm not able to control the simulated car in rviz. Nothing happens when I press W/A/S/D (I did set the initial pose first).
Any ideas on this? If you need any outputs or info let me know.
Edited

October 7, 2020 at 12:11pm
Awesome! thanks for taking a look. I'll try to help you as best as I can, but I need some more information. What install procedure/scripts are you using so I know what to look at? Which depencies are giving you trouble?
In terms of teleop, does the gray window appear? Is there any errors in the stdout?
Edited
I installed ROS Noetic following the standard procedure. From there I followed the MuSHR Quick Start guide to install everything else, with two exceptions: 1 - I had to install serial from source (no Noetic package is available), and 2 - when installing range_libc I ran sudo python3 setup.py install (and actually, I had to edit both range_libc's setup.py and RangeLibc.pyx to explicitly tell Cython to use python3).
Yes, the gray teleop window does appear. rviz starts normally too and the car model appears. I have two warnings from the stdout window, I wasn't thinking they were the cause (at least not the YAML one) but you can take a look:
Edited
[ WARN] [1602048270.878931093]: The root link base_footprint has an inertia specified in the URDF, but KDL does not support a root link with an inertia. As a workaround, you can add an extra dummy link to your URDF.
Edited
/opt/ros/noetic/lib/python3/dist-packages/tf/listener.py:97: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details. data = yaml.load(self.\_buffer.all\_frames\_as\_yaml()) or {}
Actually, that KDL warning might actually be the problem now that I think about it. I'm looking into that now (I just ran into this last night), but I am new to ROS so let me know your thoughts.
This shows some errors with the RobotModel in rviz. It's starting to make some sense but not sure how to fix this.
Edited

October 8, 2020 at 12:55pm
yes that error is definetly unusual and related to the rviz errors you are seeing. After launching the sim, could you run the following rosrun tf view_frames and upload the frames.pdf file generated. I'm not sure why that would limit the car from moving. Could you add the /car_pose topic (red arrow) to rviz and try teleop again?

October 8, 2020 at 7:25pm
(matt-schmittle) Here's what I got from rosrun tf view_frames (download and open it separately). When I add the /car_pose topic to rviz I get a repeating error message:
[ERROR] [1602179240.546829135]: Error transforming pose 'Pose' from frame '/map' to frame 'map'
Edited
ok this tree is wrong. It should look like this:
Searching around it could be related to the following problem I'll take a closer look this weekend and see if we can get around this. The "car" prefix is so that we can run multiple cars in the sim.

October 9, 2020 at 4:33am
Yeah it definitely seems to be. Following that discussion I saw this, which may be worth a look.
Edited

October 10, 2020 at 1:33pm
There is PR for noetic-devel specifically. You could either wait for the update. Or copy the changes made in the PR (only 4 files) to try out now.

October 10, 2020 at 8:01pm
(matt-schmittle) It works: I can control the car now with the sim teleop, and the tf tree looks good.
This PR has some support behind it, although the ROS2 PR has had some pushback so not sure what will happen with it. Hopefully they go with it. I'll keep an eye on it.
Edited
awesome! yeah ROS2 will take some time. Is this on a desktop or the car itself? If on the real car, what jetpack version are you using? Regardless, I would be curious to see if the autonomous nav stack works with noetic, I don't see any reason why it wouldn't.
Right now I'm working on desktop. I wanted to get a VM setup and deal with a simple test before moving on to the real car. I plan to start working with the car next week, although it will be my first time running it so I'll have some initial config/tuning to do. I'll be using Jetpack 4.4.

October 11, 2020 at 11:06am
ok, you may want to check this out before doing so. 4.4 doesn't support Ubuntu Focal yet. Seems like their workaround is docker for now and installing from souce.

October 11, 2020 at 7:15pm
Yeah that's the conversation I was referencing in my first post, I just didn't link it. I've seen two people say that they are using Jetpack 4.4 on Focal, so at least aren't any major blockers known yet ... and that's a start.
I did flash Jetpack 4.4 and do the upgrade to Focal on the Jetson, but I stopped there when I saw that the Python bindings for TensorRT are not distributed on Focal. I later found they do have a wheel for installing them for a few versions of Python less than 3.8 (Focal uses 3.8) - something I will probably try soon.
I also did build Noetic from source on Bionic / 18.04. I did not use the docker from NVIDIA, although I used it as guidance along with ROS's instructions. NVIDIA's docker script wouldn't have worked anyway when trying to install desktop_full (the docker only installs desktop so maybe it works for that) because the rosdep install command fails with these errors:
ERROR[tf2_geometry_msgs]: [python3-pykdl] defined as "not available" for OS version [bionic] ERROR[tf_conversions]: [python3-pykdl] defined as "not available" for OS version [bionic] ERROR[gazebo_dev]: No definition of [libgazebo11-dev] for OS version [bionic]
This led to me having to instead do rosdep check and apt-get install for all of the things rosdep listed. That works, but there are some other problems along the way that I had to troubleshoot. One of those is that this build requires 8GB of memory. I ran into that with pcl_ros and one other package following it but I don't know if they are needed in desktop (would then be a blocker for Nano builds). Finally, I built libgazebo11-dev, and liborocos-kdl1.4 and the python wrapper (python3-pykdl), but I get a segfault when importing PyKDL in Python3. Maybe I did something wrong building it, but at that point I gave up. My understanding is a little weak on this but I'm also not sure how to keep Noetic (Focal) packages up to date in Bionic, I guess have to rebuild them on every update, which sounds like a nuisance.
So, I am going with Noetic on Focal and just crossing my fingers that all of NVIDIA's stuff works on it (including the Intel Realsense libraries). If it doesn't I'll probably just downgrade to Melodic on Bionic and wait for NVIDIA to support Focal officially.
Edited

October 12, 2020 at 12:11pm
wow yeah this seems like a handful. So for one, you don't need desktop full to run the mushr stack I believe. It is unlikely you will need things like the Gazebo physics simulator running on your nano. Also, TensorRT is not required for any mushr specific stuff at this point (we have a new person detection tutorial coming out soon that will need it). If that is the only blocker (as of right now), I wouldn't worry about it unless you need TensorRT for your application. I'll keep an eye out for Nvidia supporting Focal and the tf_prefix PR. It seems like once those things are merged officially, we can begin a migration to Focal/Noetic/Python3.8
Show more messages