-
Notifications
You must be signed in to change notification settings - Fork 25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Install the URDF files in a system directory and search #74
Conversation
Question: do we need to use the same path prefix for the packages? how does that work? |
I broke the test_robot!
=> apparently the pointer has a problem, but I do not see where it comes from (yet). I guess the file is not properly loaded? |
It seems that the pendulum is not fixed by default. It works better if I first fix it with ` |
(the master fails too?) |
@costashatz What do we do for complex URDF (Talos, iCub, etc.)?
It might be interesting to use a repo for these complex robots because the urdf are also used in the control libraries (tsid, opensot, etc.). However:
I find it interesting that you had to use a special URDF from talos (not exactly the one we used so far): this suggests that having a special URDF for simulation is needed, and suggests that we should have our own urdf library. Of course, the modified URDF might work for control too (and Gazebo). But is it the rule? the same urdf for dart, gazebo, tsid, openSOT? is it easy? I guess your are leaning towards option 3 (using a submodule)? I would prefer option 1 but no option is perfect. What do you think? |
I would be okay for option 1 and option 2. Option 2 is a bit better for the users of robot_dart. Option 1 is a bit more generic.
If we do this (one class per robot supported in robot_dart), then we need to have the URDFs in the repo. Otherwise each time that we update the submodule or the separate repo, we would have to check if everything is okay in robot_dart and a lot of regression errors will appear.
I do not like option 3. I usually do not like submodules except if they are really needed.
I did not have to use a special URDF. There are two main issues with all URDFs and all the different loaders (DART loader, Gazebo loader, RaiSim loader):
If you combine the above, something unexpected and different happens in every combination of URDF and loader. What I usually do, I create a correct clean URDF where I define everything explicitly (the dummy links with almost zero mass, etc.). The "official" URDFs should do this by default, but they do not.
So overall I would say to go either with option 1 and have correct clean URDFs for each robot that we want to use or option 3 and then someone can either copy them or install them with robot_dart and use them from "public" paths. |
There is also option 4: So... option 1: we simply store all the urdf in robot_dart? |
With option 1, how do you plan to deal with situations such as we have different hexapod URDFs, because my new hexapod is slightly different from the Inria hexapod. |
You would still be able to use your own urdf (like, the Hexapod class has an optional URDF filename). But because we have only a few users for now, it might be better to simply have your urdf in the library too. The idea is that it should be easy to say "I want to simulate a 6-legged robot" and start right away (without digging for the right, validated urdf). I think we might have several versions of Talos and there are many versions of iCub. Maybe we could sort them properly by version if needed. At any rate, I think we need a curated library of URDF that are known to work with this specific simulator. |
@costashatz I added a Talos example. Questions:
|
@Aneoshun if you have hexapod urdf, can you send it to me? |
If I remember well yes, they require absolute paths.
I will..
I would say in principle no, but it might be a good idea to keep the xacros used to generate the URDF. This can be good for debugging or small improvements; easier also for other people to improve the files. |
Another question: what is the 'is_urdf_string' boolean? |
@jbmouret I had a deeper look, and :
I'll do this as soon as possible.. After this, I think that we can merge.. |
@jbmouret can you make the visual meshes of iCub ( |
I will have a look. This sounds possible. |
I had to rotate the visual of the feet (I don't know why). Also, I am not fond of the color, but this seems to be embedded in the glb (not in the urdf). |
Why can't we remove them? do we use them? |
I will remove them. I just have to do it one by one (because there are other |
I guess we have to rotate the waist also.. I'll try to do it..
You mean of the feet or other color? The rest seems the same to me.. |
The issue is the normals, not the color. They are different from the dae files. Can you tell me what you did? And I can try to do it myself? |
@jbmouret now that I check the Talos meshes also, the |
I did not remove any triangle but I smoothed the normals. Smoothing is done using a heuristics (< 12 degrees), so sometimes we lose details (the triangles are still there, but they are too smooth). I simply did: for obj in bpy.data.objects:
if obj.type == 'MESH':
obj.data.use_auto_smooth = 1
obj.data.auto_smooth_angle = math.radians(5) # 12 degrees For iCub, I do not see any difference with the DAE version except for the feet (which are smoother now) and the waist (as you noted). I do not like the green/blue color, but we will see this kind of detail later :) |
For me the shading is different (I am assuming because of the normals), but seems a bit weird. For Talos, the meshes seem a bit too smoothed.
Can you try with smaller degrees? |
@jbmouret I think that this is ready to be merged. Can you have a last look? |
Merging... |
Install the URDF files in a system directory and search
Currently only the search (WIP). See #52