Page 1 of 1

btMultiBodyJointMotor interaction and control problem.

Posted: Fri Feb 15, 2019 6:11 pm
by Dox
Hello,

I'm playing around MultiBody in order to overcome a constraint stability problem for a robotic arm chain in my framework.

I wrote a simple urdf file (at the end of this message) loaded by the standard urdf multibody example. There are 3 links. The blue link is the fixed base, then we have a white link connected to the base via a revolute joint and then the red one connected to the white link with another revolute joint.

I apply a velocity on motorized revolute joint in order to move the white link, but at the end of its superior and inferior limit the red link move itself. Conversely, I've applied a velocity on motorized revolute joint in order to move the red link and, at end of its inferior limit, the white link start to move itself as side effect.

In general this is an unwanted behavior: if I move a motor I don't want to move another motor in any condition, unless applying an explicit velocity on that motor.

You can look at the behavior in the video attached:

https://drive.google.com/open?id=1aMHtX ... cRoP11DRlI

Can I control this behavior?

Thanks, bye

<?xml version="1.0"?>
<robot name="physics">
<link name="DOF_ArmRotate">
<visual>
<geometry>
<box size="0.42 0.11 0.22"/>
</geometry>
<origin rpy="0 0 0" xyz="0.21 0 0"/>
<material name="blue">
<color rgba="0 0 0.8 1"/>
</material>
</visual>
<collision>
<geometry>
<box size="0.42 0.11 0.22"/>
</geometry>
<origin rpy="0 0 0" xyz="0.21 0 0"/>
</collision>
<inertial>
<mass value="0"/>
<origin rpy="0 0 0" xyz="0.21 0 0 "/>
<inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
</inertial>
</link>

<link name="DOF_Snodo1">
<visual>
<geometry>
<box size="0.68 0.23 0.64"/>
</geometry>
<origin rpy="0 0 0" xyz="0.34 0 0.32"/>
<material name="white">
<color rgba="1 1 1 1"/>
</material>
</visual>
<collision>
<geometry>
<box size="0.68 0.23 0.64"/>
</geometry>
<origin rpy="0 0 0" xyz="0.34 0 0.32"/>
</collision>
<inertial>
<mass value="2"/>
<origin rpy="0 0 0" xyz="0.34 0 0.32"/>
<inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
</inertial>
</link>

<joint name="Rotate_White_Joint" type="revolute">
<axis xyz="0 1 0"/>
<limit effort="1000.0" lower="-0.785" upper="0.785" velocity="0.5"/>
<origin rpy="0 0 0" xyz="0.42 0.0 0.0"/>
<parent link="DOF_ArmRotate"/>
<child link="DOF_Snodo1"/>
</joint>

<link name="DOF_Snodo2">
<visual>
<geometry>
<box size="0.42 0.12 0.20"/>
</geometry>
<origin rpy="0 0 0" xyz="0.21 0 0.10"/>
<material name="red">
<color rgba="1 0 0 1"/>
</material>
</visual>
<collision>
<geometry>
<box size="0.42 0.12 0.20"/>
</geometry>
<origin rpy="0 0 0" xyz="0.21 0 0.10"/>
</collision>
<inertial>
<mass value="1"/>
<origin rpy="0 0 0" xyz="0.21 0 0.10"/>
<inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
</inertial>
</link>

<joint name="Rotate_Red_Joint" type="revolute">
<axis xyz="0 1 0"/>
<limit effort="1000.0" lower="-0.785" upper="0.785" velocity="0.5"/>
<origin rpy="0 0 0" xyz="0.68 0.0 0.64"/>
<parent link="DOF_Snodo1"/>
<child link="DOF_Snodo2"/>
</joint>
</robot>

Re: btMultiBodyJointMotor interaction and control problem.

Posted: Fri Feb 15, 2019 6:24 pm
by Erwin Coumans
Can you please file an issue in the tracker, with a C++ reproduction case and/or PyBullet reproduction case (PyBullet is preferable).

https://github.com/bulletphysics/bullet3/issues

Thanks!
Erwin

Re: btMultiBodyJointMotor interaction and control problem.

Posted: Mon Feb 18, 2019 10:51 am
by Dox
Hello Erwin,

ok. So, do you think this is a bug and not a parameters tweaks?

I would kindly request if you can suggest to me some ideas about joint stabilization described here:

viewtopic.php?f=9&t=12610

As son as possible I'll open the bugtrack on multibody.

Many thanks,

Bye

Re: btMultiBodyJointMotor interaction and control problem.

Posted: Mon Feb 18, 2019 11:48 am
by Dox