Giter Site home page Giter Site logo

Comments (12)

yzqin avatar yzqin commented on August 14, 2024 2

To process visual mesh and visual material, you can use Blender to do that and there are many tutorial on the internet for mesh simplification with Blender.

For the collision mesh of hand, we already take much effort on simplifying the meshes of shadow hand in this repo. From SAPIEN persepctive, it is better for us to first profile your simulation and figure our the simulation speeding and rendering speed respectively. After you get to know what is the bottleneck, you can better clean up the mesh for training.

By the way, speeding up simulation in general is a hard problem compared with training RL. It requires much expertise on modeling and coding. This is also the reason why we provide many well-modeled URDF in this repo.

from dex-urdf.

yzqin avatar yzqin commented on August 14, 2024 2

Based on your video, the motion is broken in an abnormal way. I have some guess for the cause.

  1. Self collision, which is the most common reason for your video. To test whether it is the case, you can try the following code after loading the robot to disable self collision detection and find out whether it helps:
robot_builder = loader.load_file_as_articulation_builder(urdf_path)
for link_builder in robot_builder.get_link_builders():
    link_builder.set_collision_groups(1, 1, 17, 0)
robot = robot_builder.build(fix_root_link=True)
  1. Gravity compensation. You can add it by robot.set_qf(self.robot.compute_passive_force())

  2. Using a smaller time step, for example, 1/240.

Please let me know what happens after you try these solutions.

from dex-urdf.

yzqin avatar yzqin commented on August 14, 2024

Hi @Charlie0257

First i would like to confirm with you whether you are training visual RL (the observation space is RGB or Point Cloud) or state RL (the observation space is simple state vector).

If you are training with visual RL, I think the training speed will be slower than the xarm6_allegro URDF in our dexart project due to the very complex visual mesh. For example, in your UR10 urdf, the shoulder.obj has more than 90k vertices, which is more complex than xarm.

Also even for state based training without rendering, the collision between object and shadow hand is also more complex than allegro hand due to more dof and more links. Thus the simulation-only speed is also slower.

from dex-urdf.

Charlie0257 avatar Charlie0257 commented on August 14, 2024

Thanks for your patient answers! @yzqin

I am training visual RL (the observation space is Point Cloud) with shadowhand_UR10e.urdf.

From the visual mesh view, 1) how can I reduce complex vertices? 2) How did you and your partners generate the lightweight xarm6_allegro_wrist_mounted_rotate.urdf in the first place?

From the Sapien Simulator view, is there a way to process mesh files or collisions to speed up training?

Thanks for your patient answers again!

from dex-urdf.

Charlie0257 avatar Charlie0257 commented on August 14, 2024

Thanks for your suggestions!

I will try to solve this problem :)

from dex-urdf.

Charlie0257 avatar Charlie0257 commented on August 14, 2024

Hi, @yzqin

When I use [shadow_hand_right.urdf](https://github.com/dexsuite/dex-urdf/blob/main/robots/hands/shadow_hand/shadow_hand_right.urdf) in Sapine? How can I make it behave more naturally? In the appended video, the thumb of shadowhand keeps spinning and the arm keeps shaking :(

As far as I know, joint.set_drive_property improves shadowhand's performance. Is there anything else that can be done to make shadowhand behave more naturally?

Thanks for any suggestions!

shadowhand_control.mp4

from dex-urdf.

Charlie0257 avatar Charlie0257 commented on August 14, 2024

Hi, @yzqin
Thanks for your suggestions!

  1. For the first suggestion, it does not work for me :( The thumb of shadowhand still keeps spinning...

  2. For the second suggestion, my original code is self.robot.set_qf(self.robot.compute_passive_force(external=False, coriolis_and_centrifugal=False)). But when I replaced it as you suggested, the spinning issue seemed to have been solved! The appended video shows the result after revision.

  3. For the third suggestion, I apologize that I don't know where to set the time step. Can you provide instructions with a little more detail?

  4. By the way, I set robot_arm_control_params = np.array([100000, 5000, 500]) and finger_control_params = np.array([100000, 100000, 10]) for **joint.set_drive_property** in the video. To be honest, it is tough to set. Is there any trick or detailed documentary?

Thanks for your help again!

shadowhand_sef_qf.mp4

from dex-urdf.

yzqin avatar yzqin commented on August 14, 2024

Hi @Charlie0257

Are you using the random action in this video. The motion still looks not so smooth to me but I am not so sure weather is it just because the delta position provided is very large.

Also since you mentioned that you are using the following code before but it does not works:

self.robot.set_qf(self.robot.compute_passive_force(external=False, coriolis_and_centrifugal=False))

You can try to set either external or coriolis_and_centrifugal to be True and figure out which option is more important to you. I think this experiment can provided us more information about what happened underlying the robot.

For the timestep, you can set it by

scene. set_timestep(1/240)

For the control params, I feel that the params are little bit large to me. Maybe you can use a smaller value for both damping, stiffness and force limit, which are the three params in the set_drive_property

from dex-urdf.

Charlie0257 avatar Charlie0257 commented on August 14, 2024

@yzqin, thanks for these suggestions!

  1. The video is generated by running random_action.py. Now I am testing the performance generated from RL.

  2. Actually, the time step in my code is set to self.scene.set_timestep(0.004)

I will try smaller control parameters to acquire more stable performance.

Thanks for your help again! :)

from dex-urdf.

Charlie0257 avatar Charlie0257 commented on August 14, 2024

Hi, @yzqin
I'm sorry to bother you again.

  1. When I interact with the valve using shadowhand as the agent, as shown in the video, there is mold penetration.
  2. When rendering with sapien, how do I convert the view to the collision model? (My sapien version is 2.2.1)
  3. What do the blue and green colors in the following collision visualization image mean?

Thanks for any help! And there are the penetration video and collision visualization
https://github.com/dexsuite/dex-urdf/assets/53024517/ecd4b11f-9b97-4546-be20-537723e0118a

Screenshot from 2024-02-11 22-56-12

from dex-urdf.

yzqin avatar yzqin commented on August 14, 2024
  1. Make sure that the collision between valve and shadow hand is not disabled. Check your URDF loading code and if there is something related to "xx_collision_group", pay attention to these codes. It may disable normal collision detection.
  2. To render collision, you can turn on the show collision in the viewer articulation window, there is a Show and a Hide button to show that.
  3. Green means the particular collision shape is a convex mesh file while blue means primitive collision, e.g. box, cylinder, sphere.

from dex-urdf.

Charlie0257 avatar Charlie0257 commented on August 14, 2024

Thanks for your suggestions!
I will check the URDF loading code carefully :)

from dex-urdf.

Related Issues (9)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.