Importing maps from RoadRunner to Carla on Linux

Hi, everyone! I am trying to import a RoadRunner map I created in RoadRunner with sofar no success. Has anyone followed this process through on Linux successfully? Please, asking for advice, dead in the water until I can resolve this… help is greatly appreciated! Also, I’m not a content developer or scene modeler, so this is new to me. I have created a map in Roadrunner with a simple road network, no traffic signals, and a lot of props (scenery, mostly trees, rocks, and traffic barriers). The map has the following properties: 1) It follows an elevation contour from the GIS database that includes hills and smooth areas, 2) the road network is simple, with an circle around the perimeter, perpendicular roads crossing through the center, with each quadrant having 1-3 winding roads within it, 3) different rural forest scenery in each quadrant. Q1 is is an open field with a lot of bushes and some rocks. Q2 is an open field with sparse pine trees. Q3 is a dense pine forest with dirt roads, and Q4 is a dense hardwood forest with dirt roads.

image

The roads contain some hazards, such as branches, rocks, fallen trees, and highway barriers. I only used Roadrunner props. As you can imagine, this map has a lot of props (each tree, rock, etc is a prop). I am trying to import this map to Carla running Ubuntu 18.04, GeForce RTX 2070 NVIDIA, 64 GB RAM, 2TB i7-1075H (6 cores) and Carla 0.9.11. This is a sufficiently powered machine, according to the information in the docs and in forums. Sofar, no success. The package import process described and recommended in the Carla manual utterly failed. Not only could I not import my map, but the import scripts CORRUPTED the package installation such that I could no longer load any of the maps that came with Carla and had to re-install the Carla package installation. Fail. I attempted the method recommended by RoadRunner (the plugins), got a source build of Carla, and attempted to use the plugins. The plugin appeared to start to import my map, and then the entire process appeared to hang. I left it running all night, with no success. I cut out half the map to try to simplify things a bit (only 2 quadrants), and left it to load all night. No success. (attempted to load this image, but I was only allowed to include one picture in this post)

I then tried to use the plugin import process to import the extremely simple FourWaySignal (a road intersection with a traffic light, no props/scenery) map that came with Carla. Can’t get much simpler than that, and this is a map that came with RoadRunner; I didn’t create it. (I wanted to include this picture, but the system would only let me include 1 picture in the post)

This process took about 5 minutes. Why does a simple intersection with no scenery take 5 minutes to import? This shouldn’t be the case. I then added some trees and rocks to the FourWaySignal scene. Not too many.
(It would have been really helpful to be able to include a second picture here, but the system would only let me include 1 picture in this post).

That map import took a full 36 minutes to import. Such a simple scene should not take 36 minutes to import. To emphasize the simplicity of this map - it contained only an intersection, a traffic light, and a few trees and rocks. It wasn’t complicated. The trees and rocks added to the scene increased the load time by 30+ minutes. Why? If this scene won’t load efficiently, no way will my map load. I then took a simplified version of my map, just a quadrant, left it to import all night, and no success (no errors reported, either). I contacted MathWorks, and they were able to load my full map on a Windows platform, although they say it took 5 hours+ to do so. That tells me that nothing is wrong with the map itself. But why should the import process take this long, even on Windows? I do not have a Windows box, btw. Can this be fixed??? Are there some settings in Linux which would accelerate the loading process? Dead in the water, if I can’t import. The remaining options seem to be 1) manual import, 2) use RoadRunner to import OpenDrive map, develop scenery in Unreal. I am not convinced that the manual import process is going to go much faster, if the RoadRunner plugin is a thin wrapper on top of this. If the import process truly doesn’t work very well, and the solution is to develop the scenery in Unreal, that should be stated up-front in both the Carla and the RoadRunner documentation as a limitation so that we don’t end up wasting time (and this has taken a LOT of time). If the answer is that I should use something other than RoadRunner to create content, it would be helpful to know that as well. Thanks so much for any advice!

I feel your pain.

I am pretty sure the importer is failing because your RoadRunner scene is too complex for Carla’s current importer. It most likely has to do with the amount of vegetation/props in your scene. There are a number of workarounds, none of which are ideal.

IMHO there are many improvements that need to be made with respect to importing content and maintaining scenes (instancing, managing proper collision settings on import, signalization, etc.).

If the import process is failing - make sure to remove whatever files were imported before the failure occurred - these can be found in “~/carla/Unreal/CarlaUE4/Content/package name”. If you don’t do this - the import will fail over and over.

Also are you using “~/carla/Util/BuildTools/Import.py --package package name” to import your scene?

I have worked with RoadRunner since the alpha version and am quite familiar with it. Have also been making scenes in Carla successfully-ish on Linux for a while now. feel free to PM me if you’d like additional help.

d

Hi marybp,

I’m sorry for all the frustration. The import pipeline is not simple because Unreal has a specific cooking process that we need to follow.

In summary, what comes from RoadRunner is a file with road network information (.xodr), and another with all the geometry (.fbx). For the cooking process, the only file that takes more time is the geometry one, because we need to import that file (using the Unreal FBX Importer) and then Unreal takes every mesh there and start a cooking process of that specific mesh for converting it to an Unreal asset. If you have a lot of props in the map, that means that Unreal needs to do so for each of those. And then, after all objects have been converted to Unreal assets, then we need to build the map adding all those already cooked assets at the position they need to be in the map.

My advice, but I’m not artist, is that you make the layout of the map in RoadRunner, then import the map into Unreal/CARLA, and then use the Unreal Editor to add and change the map as you want.

For a simpler maps, we usually import a map with an external road with a cross intersection inside, with some traffic lights and stop signs in 1 min approx.

Also, the advice from dschambach is true, make sure to remove old map content because it could interfere otherwise.

Regards

@bernat thanks much for the clarification. Apologies if I made it sound like this was a Carla vs. Unreal issue. (it is due to my own lack of experience working with Unreal). :blush:

If a user did take the approach you mentioned (importing only the base components from RoadRunner (rr.fbx, & rr.xodr) - is there any documentation related to adding content to a level so that if the RoadRunner assets need to be changed and re-imported - a user doesn’t lose their time and work spent creating adding cosmetic props, vegetation, etc?
many thanks

Thanks so much for the reply! I do have a lot of vegetation/props in the scene, and that is a necessary requirement of the project. Given the poor performance (36 minutes) to import the simple intersection with a few trees and rocks, I’m not optimistic about the import process for my scene. I’m using the RoadRunner plugins to import the scene. The import does not overtly fail with errors - it hangs. In the ~/carla/Unreal/carlaUE4/Content directory I only see “Carla” “Collections” “Developers” and a successfully imported test “FourWaySignal_mp2.umap”. Nothing else. What should be cleaned out here? Thanks!

Hi, @bernat and @dschambach - I did not find any doc mentioning import issues or limitations anywhere. Not in Carla, and not in RoadRunner manuals, training videos, YouTube resources, etc. Initial inquiries to RoadRunner support also did not yield this information quickly. This cost a lot of time, unfortunately.

@bernat and @dschamback - I finally did get this map to load via the Carla source build and RoadRunner plugins. It took about 18 (!) hours. And I have a machine that is suitably powered for Unreal and Carla, according to the online doc and forums. I think that in the short term, it would be helpful to mention this in the docs, and helpful to see some console output during the import process that would let the user know that the import is proceeding, and hasn’t completely hung. Top showed processing activity, but with no console output, it’s hard to know what is going on. Overall, the docs need to say more about this process so that it doesn’t cost the user hours and hours of time trying to track down what is going on with import. In talking with others about this problem, it was pointed out that load times in Unreal 4.25 (apart from RoadRunner and Carla) are considerably faster - about 2 orders of magnitude faster. If Carla could be updated to support this or a later version of Unreal, the load problems might be solved. Does anyone have any thoughts about this, or have any idea when this could happen?

@marybp - I am not part of the Carla team, however have dealt with upgrading game engine versions and simulation software. There are a tremendous amount of moving parts - and upgrades can take time.

I am excited to be working in 4.26 eventually, but can sympathize with the time and effort it takes to upgrade.

I do think it is worth doing some reading on how game engines work and look into traditional/common pipelines used to create levels in game engines. Regarding the scene which you showed a screenshot of: loading that scene straight from RoadRunner into any game engine (directly into Unity or Unreal would take a very long time and would not be very performant as is.

You need to leverage instancing and LODs. (BTW, i think RR2021a supports LODs to some extent, although I haven’t tested it.

Hope this is helpful

Hi marybp, good to know that you could import your elaborated map. We will try to update the docs with your feedback, and also it is a good idea to show more log about the import process. In theory UE4 shows lots of logs while it is cooking, but maybe for big maps there is some time that no log is shown. I will check that also.

The good news is that in current state of CARLA (or the dev branch) we are using UE 4.26 (we skip 4.25), so the next release of CARLA 0.9.12 will have this new version of Unreal.

Regards,
Bernat