UR10 moves too slow

My use case does not need to follow real world robot joint velocity.

I am using the default pickAndPlace Controller for UR10. It takes about 18 seconds to finish a single pick and place. I try to tune the event dt. and make the MaxJointVelocity bigger in the USD asset for the robot. but the robot cannot get to the desired position within the provided time. what else should I modify? The URDF file?

The main algorithm used in the PickAndPlaceController to move around is RMPflow

The PickAndPlaceController adds logic on where the robot should move (put the gripper above a block), and RMPflow takes care of moving it there. As such, it is by tuning the parameters of RMPflow that you can get the robot to move more quickly. RMPflow parameters can be a bit confusing, but there is a tuning guide here. RMPflow parameters are stored in a yaml that gets loaded at runtime. To make a robot generally move faster, you can increase the target_rmp -> accel_p_gain parameter.

Unfortunately, the UR10 PickAndPlace code is a bit out of date with things in Isaac Sim, and it does not allow the user to easily get into the config files and change the settings around. And I don’t want to confuse things by giving you a hacky solution. Instead, I suggest you look at the RMPflow Tutorial to see how you can get the robot moving around and following a target with direct access to the underlying config files.

In that tutorial, you will see a code snippet like this:

mg_extension_path = get_extension_path_from_name("omni.isaac.motion_generation")
rmp_config_dir = os.path.join(mg_extension_path, "motion_policy_configs")

#Initialize an RmpFlow object
rmpflow = RmpFlow(
    robot_description_path = rmp_config_dir + "/franka/rmpflow/robot_descriptor.yaml",
    urdf_path = rmp_config_dir + "/franka/lula_franka_gen.urdf",
    rmpflow_config_path = rmp_config_dir + "/franka/rmpflow/franka_rmpflow_common.yaml",
    end_effector_frame_name = "right_gripper",
    maximum_substep_size = 0.00334
)

This snippet initializes RMPflow using config files that are within Isaac Sim. You can add a print statement print(rmp_config_dir) and then go to that directory on your computer. There is a folder with configs for the UR10, and you can copy/paste them to a local directory and reference your new files instead.

Your next steps really depend on your goals. If you really want to use the PickAndPlaceController with your custom RMPflow controller, I can explain to you how. But the PickAndPlace controller is an example more than a supported workflow, and it is probably not your best way into Isaac Sim. What are your goals with getting started in Isaac Sim?

For this project, I am using the pick and place controller to implement some of my motion primitives. I actually have been using Isaac sim for about a year. So basically I just need to tune the rmpflow parameters?

Yes I think so. To change the RMPflow parameters for the UR10 PickAndPlace Controller, you’ll have to modify omni.isaac.universal_robots.controllers.rmpflow_controller.py Specifically, there is the line

if attach_gripper:
            self.rmp_flow_config = mg.interface_config_loader.load_supported_motion_policy_config(
                "UR10", "RMPflowSuction"
            )
        else:
            self.rmp_flow_config = mg.interface_config_loader.load_supported_motion_policy_config("UR10", "RMPflow")
self.rmp_flow = mg.lula.motion_policies.RmpFlow(**self.rmp_flow_config)

mg.interface_config_loader() is returning a dict of RMPflow parameters that are passed in as arguments. So you can replace the rmpflow_config_path argument with your own local file. Start with the RMPflow parameters that are already set for the UR10 by printing out the path that is returned by interface_config_loader and copying the file. (Or modify the parameter file directly, but I’m just trying to give you a good degree of separation of where your code lives).

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.