Combining URDFs while keeping joint limits

Official Python bindings with a focus on reinforcement learning and robotics.
Post Reply
Dyu
Posts: 4
Joined: Sun Oct 11, 2020 1:17 pm

Combining URDFs while keeping joint limits

Post by Dyu »

We are developing a PyBullet robotic toolbox where we can dynamically combine manipulators with different grippers. To this end, our objective is to combine the manipulator and gripper URDFs and load the combined URDF.

We use the following example to combine URDFs: https://github.com/bulletphysics/bullet ... ineUrdf.py

We subsequently converted the revolute joints to continuous joints as per: #2839

But now, during the robot control (e.g. IK computation, joint control, etc.), we want to take into account the joint limits, velocity limits, etc. Studying the kuka_iiwa/model.urdf and combined.urdf, we observe the following differences:

kuka_iiwa/model.urdf:

Code: Select all

<!-- joint between link_5 and link_6 -->
  <joint name="lbr_iiwa_joint_6" type="revolute">
    <parent link="lbr_iiwa_link_5"/>
    <child link="lbr_iiwa_link_6"/>
    <origin rpy="1.57079632679 0 0" xyz="0 0 0.2155"/>
    <axis xyz="0 0 1"/>
    <limit effort="300" lower="-2.09439510239" upper="2.09439510239" velocity="10"/>
    <dynamics damping="0.5"/>
  </joint>
combined.urdf:

Code: Select all

<joint name="lbr_iiwa_joint_6" type="continuous">
		<parent link="lbr_iiwa_link_5"/>
		<child link="lbr_iiwa_link_6"/>
		<dynamics damping="1.0" friction="0.0001"/>
		<origin rpy="1.57080 -0.00000 0.00000" xyz="0.00000 0.00000 0.21550"/>
		<axis xyz="0.00000 0.00000 1.00000"/>
	</joint>

The field limit effort is missing and the dynamics damping parameter is different.

So here are our questions:
  1. How would you recommend to proceed to incorporate the limits info such that they're taken into account for robot control, e.g. IK computation?
  2. If we manually add the upper_limits, lower_limits and joint_ranges in the Python script, will they be taken into account during IK computation since the joints are now of type continuous and not revolute?
  3. Should we modify the URDF editor to automatically add limit effort?
  4. How should we rectify the dynamics damping parameters?
Thank you.
Post Reply