Field-Robotics-Lab / dave

Project DAVE
Apache License 2.0
224 stars 72 forks source link

Populating with new object models #242

Closed quarkytale closed 2 years ago

quarkytale commented 2 years ago

Added all new models from DAVE Object Models and some more Cole's library. Also, ported all new object models to Ignition fuel, checkout the collection here.

Updated world looks like this,

Please suggest any additions/modifications! You can run this by launching the integrated world roslaunch dave_demo_launch dave_integrated_demo.launch.

Also, @bbingham-nps since the models are uploaded, is it a good idea to delete them from the repo? Except the ones having inertial_calcs.py script, since that can't be added on Fuel.

quarkytale commented 2 years ago

@mabelzhang You're right, the ones I uploaded have inertial properties, I will remove the comments and use the Fuel links. Corrected the description, only models having inertial_calcs.py script needs to be preserved in the repo.

Yadunund commented 2 years ago

@aaronchongth has a lot of experience uploading and managing models on fuel. He can guide you better on this if needed.

aaronchongth commented 2 years ago

Hey there! :wave: Pardon me for butting in,

We were plagued with these similar concerns around the start of the Open-RMF project, and has since found that the some best practices were needed to ensure consistent model loading/downloading behaviors over time. Most of the rules we end up adopting can be found here, naming consistencies, the absence of spaces, all referenced assets are within the model relatively, etc. The script I linked was just something random I was using a few years back, no idea if it still works.

absence of spaces

this prevented any cases of directories having apostrophes like @Yadunund mentioned, which allows us to easily write scripts to work with models en masse when needed, e.g. adding plugins, tweaking parameters, changing names, etc

naming consistencies between folder name, name in model.config and name in model.sdf

I haven't checked the models if they have differing names in different places yet, but in our experience this was rather important, as gazebo-classic references different names from different locations in different cases. Example in this screenshot of an innocent table, image

Note that the directory name matches the name in model.sdf, but gazebo-classic displays the name in model.config when listing models available for spawning. Once loaded into the world and has duplicates, it opts for the name in model.sdf, it also adds underscores and indices :sweat_smile:

image

This makes using world plugins to manipulate models quite tricky.

<uri>https://fuel.ignitionrobotics.org/1.0/quarkytale/models/MBARI MARS</uri>

We had to use a bunch of workarounds in the past when the gazebo-classic was not supporting fuel URLs, and this PR just showed us that it works now! :partying_face: So all's good regarding using URLs.

uploading models

Could we also check if the assets and models created should be uploaded under the Open Robotics organization instead? I am unsure if we have any policy regarding this. I'm not sure if you need to be an admin, but you can choose under which user/organization to upload a certain model.

bsb808 commented 2 years ago

Thank you all for the helpful discussion on all this

Deleting from repo My preference, given the short time (1 week left) , is to leave them in the repo for now. That does introduce some redundancy, but I don't think we have time to properly understand the fuel integration. I fear we'll end up making a mess.

inertial_calc.py scripts These are tiny little python scripts to estimate inertial values. I thought of them as self documentation of were the SDF values come from. If it allows for a cleaner repo, no reason to keep them around.

naming conventions I love naming conventions and spaces/special characters in file/directory names are a pet peeve.

static objects The following objects were intended to be non-static: 'flight data recorder' 'hardhat ribbed' 'hardhat superribbed' 'mud anchor' 'torpedo mk46' 'unexploded ordnance a' 'unexploded ordnance c' 'hardhat octagonal' 'hardhat standard' sonobuoy 'torpedo mk48' 'unexploded ordnance b'

The following objects can/should be static: shipwreck, 'mbari mars'

Perhaps we can simplify the collision models for some of the non-static objects.

quarkytale commented 2 years ago

Thanks for the most valuable comments! I have some follow-up questions:

Apart from that working on making lionfish, uxos, mars and ships static plus adding more creatures near the mud pit vases.

bsb808 commented 2 years ago

Currently, both the torpedos and sonobuoy are static, leaving the uxos non-static for manipulation. It did seem hazardous to put missiles near an electrical station, but I'm open to suggestions, maybe stationing them vertical for better visibility?

The torpedos and sonobuoys were library items as examples of things that we often pickup with underwater robots. Unrelated to the electrical station - the model collection world is just there to demonstrate the existence of various models.

I put two versions of ships to highlight the distortion feature, I initially placed them one in each mud pit, or should I skip the non-distorted one?

For the example, I think more is better ;)

Yadunund commented 2 years ago

Apart from that working on making lionfish, hardhats, mars and ships static plus adding more creatures near the mud pit vases.

@quarkytale just to clarify, you only need to add <static>true</static> elements within the include blocks in the dave_integrated.world file. You don't need to change anything to the models on fuel.