Merge remote-tracking branch 'bp/master'
This commit is contained in:
27
data/gripper/wsg50_one_motor_gripper_left_finger.urdf
Normal file
27
data/gripper/wsg50_one_motor_gripper_left_finger.urdf
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
<?xml version="0.0" ?>
|
||||||
|
<robot name="left_finger.urdf">
|
||||||
|
<link name="baseLink">
|
||||||
|
<contact>
|
||||||
|
<lateral_friction value="1.0"/>
|
||||||
|
<inertia_scaling value="3.0"/>
|
||||||
|
</contact>
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0.05"/>
|
||||||
|
<mass value=".2"/>
|
||||||
|
<inertia ixx="0.1" ixy="0" ixz="0" iyy="0.1" iyz="0" izz="0.1"/>
|
||||||
|
</inertial>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 4.71239" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="meshes/l_gripper_tip_scaled.stl" scale="1 1 1"/>
|
||||||
|
</geometry>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0.042"/>
|
||||||
|
<geometry>
|
||||||
|
<box size="0.02 0.02 0.15"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
</robot>
|
||||||
|
|
||||||
307
data/gripper/wsg50_one_motor_gripper_no_finger.sdf
Normal file
307
data/gripper/wsg50_one_motor_gripper_no_finger.sdf
Normal file
@@ -0,0 +1,307 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<sdf version='1.6'>
|
||||||
|
<world name='default'>
|
||||||
|
<model name='wsg50_with_gripper'>
|
||||||
|
<pose frame=''>0 0 0.4 3.14 0 0</pose>
|
||||||
|
|
||||||
|
<link name='world'>
|
||||||
|
</link>
|
||||||
|
|
||||||
|
<joint name='base_joint' type='prismatic'>
|
||||||
|
<parent>world</parent>
|
||||||
|
<child>base_link</child>
|
||||||
|
<axis>
|
||||||
|
<xyz>0 0 1</xyz>
|
||||||
|
<limit>
|
||||||
|
<lower>-10</lower>
|
||||||
|
<upper>10</upper>
|
||||||
|
<effort>1</effort>
|
||||||
|
<velocity>1</velocity>
|
||||||
|
</limit>
|
||||||
|
<dynamics>
|
||||||
|
<damping>0</damping>
|
||||||
|
<friction>0</friction>
|
||||||
|
<spring_reference>0</spring_reference>
|
||||||
|
<spring_stiffness>0</spring_stiffness>
|
||||||
|
</dynamics>
|
||||||
|
</axis>
|
||||||
|
</joint>
|
||||||
|
|
||||||
|
<link name='base_link'>
|
||||||
|
<pose frame=''>0 0 0 0 0 0</pose>
|
||||||
|
<inertial>
|
||||||
|
<pose frame=''>0 0 0 0 0 0</pose>
|
||||||
|
<mass>1.2</mass>
|
||||||
|
<inertia>
|
||||||
|
<ixx>1</ixx>
|
||||||
|
<ixy>0</ixy>
|
||||||
|
<ixz>0</ixz>
|
||||||
|
<iyy>1</iyy>
|
||||||
|
<iyz>0</iyz>
|
||||||
|
<izz>1</izz>
|
||||||
|
</inertia>
|
||||||
|
</inertial>
|
||||||
|
|
||||||
|
<visual name='base_link_visual'>
|
||||||
|
<pose frame=''>0 0 0 0 -0 0</pose>
|
||||||
|
<geometry>
|
||||||
|
<mesh>
|
||||||
|
<scale>1 1 1</scale>
|
||||||
|
<uri>meshes/WSG50_110.stl</uri>
|
||||||
|
</mesh>
|
||||||
|
</geometry>
|
||||||
|
<material>
|
||||||
|
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
|
||||||
|
</link>
|
||||||
|
|
||||||
|
<link name='motor'>
|
||||||
|
<pose frame=''>0 0 0.03 0 0 0</pose>
|
||||||
|
<inertial>
|
||||||
|
<pose frame=''>0 0 0 0 0 0</pose>
|
||||||
|
<mass>0.1</mass>
|
||||||
|
<inertia>
|
||||||
|
<ixx>0.1</ixx>
|
||||||
|
<ixy>0</ixy>
|
||||||
|
<ixz>0</ixz>
|
||||||
|
<iyy>0.1</iyy>
|
||||||
|
<iyz>0</iyz>
|
||||||
|
<izz>0.1</izz>
|
||||||
|
</inertia>
|
||||||
|
</inertial>
|
||||||
|
<visual name='motor_visual'>
|
||||||
|
<pose frame=''>0 0 0.01 0 0 0</pose>
|
||||||
|
<geometry>
|
||||||
|
<box>
|
||||||
|
<size>0.02 0.02 0.02 </size>
|
||||||
|
</box>
|
||||||
|
</geometry>
|
||||||
|
</visual>
|
||||||
|
</link>
|
||||||
|
|
||||||
|
<joint name='base_joint_motor' type='prismatic'>
|
||||||
|
<child>motor</child>
|
||||||
|
<parent>base_link</parent>
|
||||||
|
<axis>
|
||||||
|
<xyz>0 0 1</xyz>
|
||||||
|
<limit>
|
||||||
|
<lower>-0.055</lower>
|
||||||
|
<upper>0.001</upper>
|
||||||
|
<effort>10.0</effort>
|
||||||
|
<velocity>10.0</velocity>
|
||||||
|
</limit>
|
||||||
|
<dynamics>
|
||||||
|
<damping>0</damping>
|
||||||
|
<friction>0</friction>
|
||||||
|
<spring_reference>0</spring_reference>
|
||||||
|
<spring_stiffness>0</spring_stiffness>
|
||||||
|
</dynamics>
|
||||||
|
</axis>
|
||||||
|
</joint>
|
||||||
|
|
||||||
|
<link name='left_hinge'>
|
||||||
|
<pose frame=''>0 0 0.04 0 0 0</pose>
|
||||||
|
<inertial>
|
||||||
|
<pose frame=''>0 0 0.035 0 0 0</pose>
|
||||||
|
<mass>0.1</mass>
|
||||||
|
<inertia>
|
||||||
|
<ixx>0.1</ixx>
|
||||||
|
<ixy>0</ixy>
|
||||||
|
<ixz>0</ixz>
|
||||||
|
<iyy>0.1</iyy>
|
||||||
|
<iyz>0</iyz>
|
||||||
|
<izz>0.1</izz>
|
||||||
|
</inertia>
|
||||||
|
</inertial>
|
||||||
|
<visual name='motor_visual'>
|
||||||
|
<pose frame=''>-0.03 0 0.01 0 -1.2 0</pose>
|
||||||
|
<geometry>
|
||||||
|
<box>
|
||||||
|
<size>0.02 0.02 0.07 </size>
|
||||||
|
</box>
|
||||||
|
</geometry>
|
||||||
|
</visual>
|
||||||
|
</link>
|
||||||
|
|
||||||
|
<joint name='motor_left_hinge_joint' type='revolute'>
|
||||||
|
<child>left_hinge</child>
|
||||||
|
<parent>motor</parent>
|
||||||
|
<axis>
|
||||||
|
<xyz>0 1 0</xyz>
|
||||||
|
<limit>
|
||||||
|
<lower>-20.0</lower>
|
||||||
|
<upper>20.0</upper>
|
||||||
|
<effort>10</effort>
|
||||||
|
<velocity>10</velocity>
|
||||||
|
</limit>
|
||||||
|
<dynamics>
|
||||||
|
<damping>0</damping>
|
||||||
|
<friction>0</friction>
|
||||||
|
<spring_reference>0</spring_reference>
|
||||||
|
<spring_stiffness>0</spring_stiffness>
|
||||||
|
</dynamics>
|
||||||
|
<use_parent_model_frame>0</use_parent_model_frame>
|
||||||
|
</axis>
|
||||||
|
</joint>
|
||||||
|
|
||||||
|
<link name='right_hinge'>
|
||||||
|
<pose frame=''>0 0 0.04 0 0 0</pose>
|
||||||
|
<inertial>
|
||||||
|
<pose frame=''>0 0 0.035 0 0 0</pose>
|
||||||
|
<mass>0.1</mass>
|
||||||
|
<inertia>
|
||||||
|
<ixx>0.1</ixx>
|
||||||
|
<ixy>0</ixy>
|
||||||
|
<ixz>0</ixz>
|
||||||
|
<iyy>0.1</iyy>
|
||||||
|
<iyz>0</iyz>
|
||||||
|
<izz>0.1</izz>
|
||||||
|
</inertia>
|
||||||
|
</inertial>
|
||||||
|
<visual name='motor_visual'>
|
||||||
|
<pose frame=''>0.03 0 0.01 0 1.2 0</pose>
|
||||||
|
<geometry>
|
||||||
|
<box>
|
||||||
|
<size>0.02 0.02 0.07 </size>
|
||||||
|
</box>
|
||||||
|
</geometry>
|
||||||
|
</visual>
|
||||||
|
</link>
|
||||||
|
|
||||||
|
<joint name='motor_right_hinge_joint' type='revolute'>
|
||||||
|
<child>right_hinge</child>
|
||||||
|
<parent>motor</parent>
|
||||||
|
<axis>
|
||||||
|
<xyz>0 1 0</xyz>
|
||||||
|
<limit>
|
||||||
|
<lower>-20.0</lower>
|
||||||
|
<upper>20.0</upper>
|
||||||
|
<effort>10</effort>
|
||||||
|
<velocity>10</velocity>
|
||||||
|
</limit>
|
||||||
|
<dynamics>
|
||||||
|
<damping>0</damping>
|
||||||
|
<friction>0</friction>
|
||||||
|
<spring_reference>0</spring_reference>
|
||||||
|
<spring_stiffness>0</spring_stiffness>
|
||||||
|
</dynamics>
|
||||||
|
<use_parent_model_frame>0</use_parent_model_frame>
|
||||||
|
</axis>
|
||||||
|
</joint>
|
||||||
|
|
||||||
|
<link name='gripper_left'>
|
||||||
|
<pose frame=''>-0.055 0 0.06 0 -0 0</pose>
|
||||||
|
<inertial>
|
||||||
|
<pose frame=''>0 0 0.0115 0 -0 0</pose>
|
||||||
|
<mass>0.2</mass>
|
||||||
|
<inertia>
|
||||||
|
<ixx>0.1</ixx>
|
||||||
|
<ixy>0</ixy>
|
||||||
|
<ixz>0</ixz>
|
||||||
|
<iyy>0.1</iyy>
|
||||||
|
<iyz>0</iyz>
|
||||||
|
<izz>0.1</izz>
|
||||||
|
</inertia>
|
||||||
|
</inertial>
|
||||||
|
|
||||||
|
<visual name='gripper_left_visual'>
|
||||||
|
<pose frame=''>0 0 -0.06 0 0 0</pose>
|
||||||
|
<geometry>
|
||||||
|
<mesh>
|
||||||
|
<scale>0.001 0.001 0.001</scale>
|
||||||
|
<uri>meshes/GUIDE_WSG50_110.stl</uri>
|
||||||
|
</mesh>
|
||||||
|
</geometry>
|
||||||
|
</visual>
|
||||||
|
<visual name='gripper_left_fixed_joint_lump__finger_left_visual_1'>
|
||||||
|
<pose frame=''>0 0 -0.037 0 0 0</pose>
|
||||||
|
<geometry>
|
||||||
|
<mesh>
|
||||||
|
<scale>0.001 0.001 0.001</scale>
|
||||||
|
<uri>meshes/WSG-FMF.stl</uri>
|
||||||
|
</mesh>
|
||||||
|
</geometry>
|
||||||
|
</visual>
|
||||||
|
|
||||||
|
</link>
|
||||||
|
|
||||||
|
<joint name='gripper_left_hinge_joint' type='prismatic'>
|
||||||
|
<child>gripper_left</child>
|
||||||
|
<parent>base_link</parent>
|
||||||
|
<axis>
|
||||||
|
<xyz>1 0 0</xyz>
|
||||||
|
<limit>
|
||||||
|
<lower>-0.01</lower>
|
||||||
|
<upper>0.04</upper>
|
||||||
|
<effort>1</effort>
|
||||||
|
<velocity>1</velocity>
|
||||||
|
</limit>
|
||||||
|
<dynamics>
|
||||||
|
<damping>0</damping>
|
||||||
|
<friction>0</friction>
|
||||||
|
<spring_reference>0</spring_reference>
|
||||||
|
<spring_stiffness>0</spring_stiffness>
|
||||||
|
</dynamics>
|
||||||
|
</axis>
|
||||||
|
</joint>
|
||||||
|
|
||||||
|
<link name='gripper_right'>
|
||||||
|
<pose frame=''>0.055 0 0.06 0 0 0</pose>
|
||||||
|
<inertial>
|
||||||
|
<pose frame=''>0 0 0.0115 0 -0 0</pose>
|
||||||
|
<mass>0.2</mass>
|
||||||
|
<inertia>
|
||||||
|
<ixx>0.1</ixx>
|
||||||
|
<ixy>0</ixy>
|
||||||
|
<ixz>0</ixz>
|
||||||
|
<iyy>0.1</iyy>
|
||||||
|
<iyz>0</iyz>
|
||||||
|
<izz>0.1</izz>
|
||||||
|
</inertia>
|
||||||
|
</inertial>
|
||||||
|
|
||||||
|
<visual name='gripper_right_visual'>
|
||||||
|
<pose frame=''>0 0 -0.06 0 0 3.14159</pose>
|
||||||
|
<geometry>
|
||||||
|
<mesh>
|
||||||
|
<scale>0.001 0.001 0.001</scale>
|
||||||
|
<uri>meshes/GUIDE_WSG50_110.stl</uri>
|
||||||
|
</mesh>
|
||||||
|
</geometry>
|
||||||
|
</visual>
|
||||||
|
<visual name='gripper_right_fixed_joint_lump__finger_right_visual_1'>
|
||||||
|
<pose frame=''>0 0 -0.037 0 0 3.14159</pose>
|
||||||
|
<geometry>
|
||||||
|
<mesh>
|
||||||
|
<scale>0.001 0.001 0.001</scale>
|
||||||
|
<uri>meshes/WSG-FMF.stl</uri>
|
||||||
|
</mesh>
|
||||||
|
</geometry>
|
||||||
|
</visual>
|
||||||
|
</link>
|
||||||
|
|
||||||
|
<joint name='gripper_right_hinge_joint' type='prismatic'>
|
||||||
|
<child>gripper_right</child>
|
||||||
|
<parent>base_link</parent>
|
||||||
|
<axis>
|
||||||
|
<xyz>1 0 0</xyz>
|
||||||
|
<limit>
|
||||||
|
<lower>-0.04</lower>
|
||||||
|
<upper>0.01</upper>
|
||||||
|
<effort>1</effort>
|
||||||
|
<velocity>1</velocity>
|
||||||
|
</limit>
|
||||||
|
<dynamics>
|
||||||
|
<damping>0</damping>
|
||||||
|
<friction>0</friction>
|
||||||
|
<spring_reference>0</spring_reference>
|
||||||
|
<spring_stiffness>0</spring_stiffness>
|
||||||
|
</dynamics>
|
||||||
|
</axis>
|
||||||
|
</joint>
|
||||||
|
|
||||||
|
</model>
|
||||||
|
</world>
|
||||||
|
</sdf>
|
||||||
27
data/gripper/wsg50_one_motor_gripper_right_finger.urdf
Normal file
27
data/gripper/wsg50_one_motor_gripper_right_finger.urdf
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
<?xml version="0.0" ?>
|
||||||
|
<robot name="right_finger.urdf">
|
||||||
|
<link name="baseLink">
|
||||||
|
<contact>
|
||||||
|
<lateral_friction value="1.0"/>
|
||||||
|
<inertia_scaling value="3.0"/>
|
||||||
|
</contact>
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0.05"/>
|
||||||
|
<mass value=".2"/>
|
||||||
|
<inertia ixx="0.1" ixy="0" ixz="0" iyy="0.1" iyz="0" izz="0.1"/>
|
||||||
|
</inertial>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 1.5708" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="meshes/l_gripper_tip_scaled.stl" scale="1 1 1"/>
|
||||||
|
</geometry>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0.042"/>
|
||||||
|
<geometry>
|
||||||
|
<box size="0.02 0.02 0.15"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
</robot>
|
||||||
|
|
||||||
289
data/kuka_iiwa/model_free_base.urdf
Normal file
289
data/kuka_iiwa/model_free_base.urdf
Normal file
@@ -0,0 +1,289 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<!-- ======================================================================= -->
|
||||||
|
<!-- | This document was autogenerated by xacro from lbr_iiwa.urdf.xacro | -->
|
||||||
|
<!-- | Original xacro: https://github.com/rtkg/lbr_iiwa/archive/master.zip | -->
|
||||||
|
<!-- | EDITING THIS FILE BY HAND IS NOT RECOMMENDED | -->
|
||||||
|
<!-- | Changes (kohlhoff): | -->
|
||||||
|
<!-- | * Removed gazebo tags. | -->
|
||||||
|
<!-- | * Removed unused materials. | -->
|
||||||
|
<!-- | * Made mesh paths relative. | -->
|
||||||
|
<!-- | * Removed material fields from collision segments. | -->
|
||||||
|
<!-- | * Removed the self_collision_checking segment. | -->
|
||||||
|
<!-- | * Removed transmission segments, since they didn't match the | -->
|
||||||
|
<!-- | convention, will have to added back later. | -->
|
||||||
|
<!-- ======================================================================= -->
|
||||||
|
<!--LICENSE: -->
|
||||||
|
<!--Copyright (c) 2015, Robert Krug & Todor Stoyanov, AASS Research Center, -->
|
||||||
|
<!--Orebro University, Sweden -->
|
||||||
|
<!--All rights reserved. -->
|
||||||
|
<!-- -->
|
||||||
|
<!--Redistribution and use in source and binary forms, with or without -->
|
||||||
|
<!--modification, are permitted provided that the following conditions are -->
|
||||||
|
<!--met: -->
|
||||||
|
<!-- -->
|
||||||
|
<!--1. Redistributions of source code must retain the above copyright notice,-->
|
||||||
|
<!-- this list of conditions and the following disclaimer. -->
|
||||||
|
<!-- -->
|
||||||
|
<!--2. Redistributions in binary form must reproduce the above copyright -->
|
||||||
|
<!-- notice, this list of conditions and the following disclaimer in the -->
|
||||||
|
<!-- documentation and/or other materials provided with the distribution. -->
|
||||||
|
<!-- -->
|
||||||
|
<!--THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -->
|
||||||
|
<!--IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,-->
|
||||||
|
<!--THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -->
|
||||||
|
<!--PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -->
|
||||||
|
<!--CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -->
|
||||||
|
<!--EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -->
|
||||||
|
<!--PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -->
|
||||||
|
<!--PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -->
|
||||||
|
<!--LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -->
|
||||||
|
<!--NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -->
|
||||||
|
<!--SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -->
|
||||||
|
<robot name="lbr_iiwa" xmlns:xacro="http://www.ros.org/wiki/xacro">
|
||||||
|
<!-- Import Rviz colors -->
|
||||||
|
<material name="Grey">
|
||||||
|
<color rgba="0.2 0.2 0.2 1.0"/>
|
||||||
|
</material>
|
||||||
|
<material name="Orange">
|
||||||
|
<color rgba="1.0 0.423529411765 0.0392156862745 1.0"/>
|
||||||
|
</material>
|
||||||
|
<material name="Blue">
|
||||||
|
<color rgba="0.5 0.7 1.0 1.0"/>
|
||||||
|
</material>
|
||||||
|
|
||||||
|
<!--Import the lbr iiwa macro -->
|
||||||
|
<!--Import Transmissions -->
|
||||||
|
<!--Include Utilities -->
|
||||||
|
<!--The following macros are adapted from the LWR 4 definitions of the RCPRG - https://github.com/RCPRG-ros-pkg/lwr_robot -->
|
||||||
|
<!--Little helper macros to define the inertia matrix needed for links.-->
|
||||||
|
<!--Cuboid-->
|
||||||
|
<!--Cylinder: length is along the y-axis! -->
|
||||||
|
<!--lbr-->
|
||||||
|
<link name="lbr_iiwa_link_0">
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="-0.1 0 0.07"/>
|
||||||
|
<!--Increase mass from 5 Kg original to provide a stable base to carry the
|
||||||
|
arm.-->
|
||||||
|
<mass value="0.1"/>
|
||||||
|
<inertia ixx="0.05" ixy="0" ixz="0" iyy="0.06" iyz="0" izz="0.03"/>
|
||||||
|
</inertial>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="meshes/link_0.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="Grey"/>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="meshes/link_0.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<!-- joint between link_0 and link_1 -->
|
||||||
|
<joint name="lbr_iiwa_joint_1" type="revolute">
|
||||||
|
<parent link="lbr_iiwa_link_0"/>
|
||||||
|
<child link="lbr_iiwa_link_1"/>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0.1575"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<limit effort="300" lower="-2.96705972839" upper="2.96705972839" velocity="10"/>
|
||||||
|
<dynamics damping="0.5"/>
|
||||||
|
</joint>
|
||||||
|
<link name="lbr_iiwa_link_1">
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="0 -0.03 0.12"/>
|
||||||
|
<mass value="4"/>
|
||||||
|
<inertia ixx="0.1" ixy="0" ixz="0" iyy="0.09" iyz="0" izz="0.02"/>
|
||||||
|
</inertial>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="meshes/link_1.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="Blue"/>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="meshes/link_1.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<!-- joint between link_1 and link_2 -->
|
||||||
|
<joint name="lbr_iiwa_joint_2" type="revolute">
|
||||||
|
<parent link="lbr_iiwa_link_1"/>
|
||||||
|
<child link="lbr_iiwa_link_2"/>
|
||||||
|
<origin rpy="1.57079632679 0 3.14159265359" xyz="0 0 0.2025"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<limit effort="300" lower="-2.09439510239" upper="2.09439510239" velocity="10"/>
|
||||||
|
<dynamics damping="0.5"/>
|
||||||
|
</joint>
|
||||||
|
<link name="lbr_iiwa_link_2">
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="0.0003 0.059 0.042"/>
|
||||||
|
<mass value="4"/>
|
||||||
|
<inertia ixx="0.05" ixy="0" ixz="0" iyy="0.018" iyz="0" izz="0.044"/>
|
||||||
|
</inertial>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="meshes/link_2.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="Blue"/>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="meshes/link_2.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<!-- joint between link_2 and link_3 -->
|
||||||
|
<joint name="lbr_iiwa_joint_3" type="revolute">
|
||||||
|
<parent link="lbr_iiwa_link_2"/>
|
||||||
|
<child link="lbr_iiwa_link_3"/>
|
||||||
|
<origin rpy="1.57079632679 0 3.14159265359" xyz="0 0.2045 0"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<limit effort="300" lower="-2.96705972839" upper="2.96705972839" velocity="10"/>
|
||||||
|
<dynamics damping="0.5"/>
|
||||||
|
</joint>
|
||||||
|
<link name="lbr_iiwa_link_3">
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0.03 0.13"/>
|
||||||
|
<mass value="3"/>
|
||||||
|
<inertia ixx="0.08" ixy="0" ixz="0" iyy="0.075" iyz="0" izz="0.01"/>
|
||||||
|
</inertial>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="meshes/link_3.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="Orange"/>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="meshes/link_3.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<!-- joint between link_3 and link_4 -->
|
||||||
|
<joint name="lbr_iiwa_joint_4" type="revolute">
|
||||||
|
<parent link="lbr_iiwa_link_3"/>
|
||||||
|
<child link="lbr_iiwa_link_4"/>
|
||||||
|
<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>
|
||||||
|
<link name="lbr_iiwa_link_4">
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0.067 0.034"/>
|
||||||
|
<mass value="2.7"/>
|
||||||
|
<inertia ixx="0.03" ixy="0" ixz="0" iyy="0.01" iyz="0" izz="0.029"/>
|
||||||
|
</inertial>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="meshes/link_4.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="Blue"/>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="meshes/link_4.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<!-- joint between link_4 and link_5 -->
|
||||||
|
<joint name="lbr_iiwa_joint_5" type="revolute">
|
||||||
|
<parent link="lbr_iiwa_link_4"/>
|
||||||
|
<child link="lbr_iiwa_link_5"/>
|
||||||
|
<origin rpy="-1.57079632679 3.14159265359 0" xyz="0 0.1845 0"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<limit effort="300" lower="-2.96705972839" upper="2.96705972839" velocity="10"/>
|
||||||
|
<dynamics damping="0.5"/>
|
||||||
|
</joint>
|
||||||
|
<link name="lbr_iiwa_link_5">
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="0.0001 0.021 0.076"/>
|
||||||
|
<mass value="1.7"/>
|
||||||
|
<inertia ixx="0.02" ixy="0" ixz="0" iyy="0.018" iyz="0" izz="0.005"/>
|
||||||
|
</inertial>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="meshes/link_5.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="Blue"/>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="meshes/link_5.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<!-- 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>
|
||||||
|
<link name="lbr_iiwa_link_6">
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0.0006 0.0004"/>
|
||||||
|
<mass value="1.8"/>
|
||||||
|
<inertia ixx="0.005" ixy="0" ixz="0" iyy="0.0036" iyz="0" izz="0.0047"/>
|
||||||
|
</inertial>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="meshes/link_6.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="Orange"/>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="meshes/link_6.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<!-- joint between link_6 and link_7 -->
|
||||||
|
<joint name="lbr_iiwa_joint_7" type="revolute">
|
||||||
|
<parent link="lbr_iiwa_link_6"/>
|
||||||
|
<child link="lbr_iiwa_link_7"/>
|
||||||
|
<origin rpy="-1.57079632679 3.14159265359 0" xyz="0 0.081 0"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<limit effort="300" lower="-3.05432619099" upper="3.05432619099" velocity="10"/>
|
||||||
|
<dynamics damping="0.5"/>
|
||||||
|
</joint>
|
||||||
|
<link name="lbr_iiwa_link_7">
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0.02"/>
|
||||||
|
<mass value="0.3"/>
|
||||||
|
<inertia ixx="0.001" ixy="0" ixz="0" iyy="0.001" iyz="0" izz="0.001"/>
|
||||||
|
</inertial>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="meshes/link_7.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="Grey"/>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="meshes/link_7.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
|
||||||
|
</robot>
|
||||||
|
|
||||||
@@ -270,6 +270,7 @@ static ExampleEntry gDefaultExamples[]=
|
|||||||
ExampleEntry(1,"Two Point Grasp","Grasp experiment with two point contact to test rolling friction", GripperGraspExampleCreateFunc, eTWO_POINT_GRASP),
|
ExampleEntry(1,"Two Point Grasp","Grasp experiment with two point contact to test rolling friction", GripperGraspExampleCreateFunc, eTWO_POINT_GRASP),
|
||||||
ExampleEntry(1,"One Motor Gripper Grasp","Grasp experiment with a gripper with one motor to test slider constraint for closed loop structure", GripperGraspExampleCreateFunc, eONE_MOTOR_GRASP),
|
ExampleEntry(1,"One Motor Gripper Grasp","Grasp experiment with a gripper with one motor to test slider constraint for closed loop structure", GripperGraspExampleCreateFunc, eONE_MOTOR_GRASP),
|
||||||
ExampleEntry(1,"Grasp Soft Body","Grasp soft body experiment", GripperGraspExampleCreateFunc, eGRASP_SOFT_BODY),
|
ExampleEntry(1,"Grasp Soft Body","Grasp soft body experiment", GripperGraspExampleCreateFunc, eGRASP_SOFT_BODY),
|
||||||
|
ExampleEntry(1,"Softbody Multibody Coupling","Two way coupling between soft body and multibody experiment", GripperGraspExampleCreateFunc, eSOFTBODY_MULTIBODY_COUPLING),
|
||||||
|
|
||||||
|
|
||||||
#ifdef ENABLE_LUA
|
#ifdef ENABLE_LUA
|
||||||
|
|||||||
@@ -343,7 +343,6 @@ public:
|
|||||||
slider.m_maxVal=1;
|
slider.m_maxVal=1;
|
||||||
m_guiHelper->getParameterInterface()->registerSliderFloatParameter(slider);
|
m_guiHelper->getParameterInterface()->registerSliderFloatParameter(slider);
|
||||||
}
|
}
|
||||||
if (1)
|
|
||||||
{
|
{
|
||||||
b3RobotSimLoadFileArgs args("");
|
b3RobotSimLoadFileArgs args("");
|
||||||
args.m_fileName = "gripper/wsg50_one_motor_gripper_new.sdf";
|
args.m_fileName = "gripper/wsg50_one_motor_gripper_new.sdf";
|
||||||
@@ -374,12 +373,10 @@ public:
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (1)
|
|
||||||
{
|
{
|
||||||
b3RobotSimLoadFileArgs args("");
|
b3RobotSimLoadFileArgs args("");
|
||||||
args.m_fileName = "plane.urdf";
|
args.m_fileName = "plane.urdf";
|
||||||
args.m_startPosition.setValue(0,0,0);
|
args.m_startPosition.setValue(0,0,-0.2);
|
||||||
args.m_startOrientation.setEulerZYX(0,0,0);
|
args.m_startOrientation.setEulerZYX(0,0,0);
|
||||||
args.m_forceOverrideFixedBase = true;
|
args.m_forceOverrideFixedBase = true;
|
||||||
args.m_useMultiBody = true;
|
args.m_useMultiBody = true;
|
||||||
@@ -388,7 +385,7 @@ public:
|
|||||||
|
|
||||||
}
|
}
|
||||||
m_robotSim.setGravity(b3MakeVector3(0,0,-10));
|
m_robotSim.setGravity(b3MakeVector3(0,0,-10));
|
||||||
m_robotSim.loadBunny();
|
m_robotSim.loadBunny(0.1,0.1,0.02);
|
||||||
|
|
||||||
b3JointInfo revoluteJoint1;
|
b3JointInfo revoluteJoint1;
|
||||||
revoluteJoint1.m_parentFrame[0] = -0.055;
|
revoluteJoint1.m_parentFrame[0] = -0.055;
|
||||||
@@ -431,6 +428,46 @@ public:
|
|||||||
m_robotSim.createJoint(0, 2, 0, 4, &revoluteJoint1);
|
m_robotSim.createJoint(0, 2, 0, 4, &revoluteJoint1);
|
||||||
m_robotSim.createJoint(0, 3, 0, 6, &revoluteJoint2);
|
m_robotSim.createJoint(0, 3, 0, 6, &revoluteJoint2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((m_options & eSOFTBODY_MULTIBODY_COUPLING)!=0)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
b3RobotSimLoadFileArgs args("");
|
||||||
|
args.m_fileName = "kuka_iiwa/model_free_base.urdf";
|
||||||
|
args.m_startPosition.setValue(0,1.0,2.0);
|
||||||
|
args.m_startOrientation.setEulerZYX(0,0,1.57);
|
||||||
|
args.m_forceOverrideFixedBase = false;
|
||||||
|
args.m_useMultiBody = true;
|
||||||
|
b3RobotSimLoadFileResults results;
|
||||||
|
m_robotSim.loadFile(args,results);
|
||||||
|
|
||||||
|
int kukaId = results.m_uniqueObjectIds[0];
|
||||||
|
int numJoints = m_robotSim.getNumJoints(kukaId);
|
||||||
|
b3Printf("numJoints = %d",numJoints);
|
||||||
|
|
||||||
|
for (int i=0;i<numJoints;i++)
|
||||||
|
{
|
||||||
|
b3JointInfo jointInfo;
|
||||||
|
m_robotSim.getJointInfo(kukaId,i,&jointInfo);
|
||||||
|
b3Printf("joint[%d].m_jointName=%s",i,jointInfo.m_jointName);
|
||||||
|
b3JointMotorArgs controlArgs(CONTROL_MODE_VELOCITY);
|
||||||
|
controlArgs.m_maxTorqueValue = 0.0;
|
||||||
|
m_robotSim.setJointMotorControl(kukaId,i,controlArgs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
b3RobotSimLoadFileArgs args("");
|
||||||
|
args.m_fileName = "plane.urdf";
|
||||||
|
args.m_startPosition.setValue(0,0,0);
|
||||||
|
args.m_startOrientation.setEulerZYX(0,0,0);
|
||||||
|
args.m_forceOverrideFixedBase = true;
|
||||||
|
args.m_useMultiBody = false;
|
||||||
|
b3RobotSimLoadFileResults results;
|
||||||
|
m_robotSim.loadFile(args,results);
|
||||||
|
}
|
||||||
|
m_robotSim.setGravity(b3MakeVector3(0,0,-10));
|
||||||
|
m_robotSim.loadBunny(0.5,10.0,0.1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
virtual void exitPhysics()
|
virtual void exitPhysics()
|
||||||
{
|
{
|
||||||
@@ -479,7 +516,7 @@ public:
|
|||||||
int fingerJointIndices[2]={0,1};
|
int fingerJointIndices[2]={0,1};
|
||||||
double fingerTargetVelocities[2]={sGripperVerticalVelocity,sGripperClosingTargetVelocity
|
double fingerTargetVelocities[2]={sGripperVerticalVelocity,sGripperClosingTargetVelocity
|
||||||
};
|
};
|
||||||
double maxTorqueValues[2]={50.0,50.0};
|
double maxTorqueValues[2]={50.0,10.0};
|
||||||
for (int i=0;i<2;i++)
|
for (int i=0;i<2;i++)
|
||||||
{
|
{
|
||||||
b3JointMotorArgs controlArgs(CONTROL_MODE_VELOCITY);
|
b3JointMotorArgs controlArgs(CONTROL_MODE_VELOCITY);
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ enum GripperGraspExampleOptions
|
|||||||
eTWO_POINT_GRASP=2,
|
eTWO_POINT_GRASP=2,
|
||||||
eONE_MOTOR_GRASP=4,
|
eONE_MOTOR_GRASP=4,
|
||||||
eGRASP_SOFT_BODY=8,
|
eGRASP_SOFT_BODY=8,
|
||||||
|
eSOFTBODY_MULTIBODY_COUPLING=16,
|
||||||
};
|
};
|
||||||
|
|
||||||
class CommonExampleInterface* GripperGraspExampleCreateFunc(struct CommonExampleOptions& options);
|
class CommonExampleInterface* GripperGraspExampleCreateFunc(struct CommonExampleOptions& options);
|
||||||
|
|||||||
@@ -1003,8 +1003,11 @@ void b3RobotSimAPI::getLinkState(int bodyUniqueId, int linkIndex, double* worldP
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void b3RobotSimAPI::loadBunny()
|
void b3RobotSimAPI::loadBunny(double scale, double mass, double collisionMargin)
|
||||||
{
|
{
|
||||||
b3SharedMemoryCommandHandle command = b3LoadBunnyCommandInit(m_data->m_physicsClient);
|
b3SharedMemoryCommandHandle command = b3LoadBunnyCommandInit(m_data->m_physicsClient);
|
||||||
|
b3LoadBunnySetScale(command, scale);
|
||||||
|
b3LoadBunnySetMass(command, mass);
|
||||||
|
b3LoadBunnySetCollisionMargin(command, collisionMargin);
|
||||||
b3SubmitClientCommand(m_data->m_physicsClient, command);
|
b3SubmitClientCommand(m_data->m_physicsClient, command);
|
||||||
}
|
}
|
||||||
@@ -165,7 +165,7 @@ public:
|
|||||||
|
|
||||||
void getLinkState(int bodyUniqueId, int linkIndex, double* worldPosition, double* worldOrientation);
|
void getLinkState(int bodyUniqueId, int linkIndex, double* worldPosition, double* worldOrientation);
|
||||||
|
|
||||||
void loadBunny();
|
void loadBunny(double scale, double mass, double collisionMargin);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //B3_ROBOT_SIM_API_H
|
#endif //B3_ROBOT_SIM_API_H
|
||||||
|
|||||||
@@ -93,6 +93,33 @@ b3SharedMemoryCommandHandle b3LoadBunnyCommandInit(b3PhysicsClientHandle physCli
|
|||||||
return (b3SharedMemoryCommandHandle) command;
|
return (b3SharedMemoryCommandHandle) command;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int b3LoadBunnySetScale(b3SharedMemoryCommandHandle commandHandle, double scale)
|
||||||
|
{
|
||||||
|
struct SharedMemoryCommand* command = (struct SharedMemoryCommand*) commandHandle;
|
||||||
|
b3Assert(command->m_type == CMD_LOAD_BUNNY);
|
||||||
|
command->m_loadBunnyArguments.m_scale = scale;
|
||||||
|
command->m_updateFlags |= LOAD_BUNNY_UPDATE_SCALE;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int b3LoadBunnySetMass(b3SharedMemoryCommandHandle commandHandle, double mass)
|
||||||
|
{
|
||||||
|
struct SharedMemoryCommand* command = (struct SharedMemoryCommand*) commandHandle;
|
||||||
|
b3Assert(command->m_type == CMD_LOAD_BUNNY);
|
||||||
|
command->m_loadBunnyArguments.m_mass = mass;
|
||||||
|
command->m_updateFlags |= LOAD_BUNNY_UPDATE_MASS;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int b3LoadBunnySetCollisionMargin(b3SharedMemoryCommandHandle commandHandle, double collisionMargin)
|
||||||
|
{
|
||||||
|
struct SharedMemoryCommand* command = (struct SharedMemoryCommand*) commandHandle;
|
||||||
|
b3Assert(command->m_type == CMD_LOAD_BUNNY);
|
||||||
|
command->m_loadBunnyArguments.m_collisionMargin = collisionMargin;
|
||||||
|
command->m_updateFlags |= LOAD_BUNNY_UPDATE_COLLISION_MARGIN;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int b3LoadUrdfCommandSetUseMultiBody(b3SharedMemoryCommandHandle commandHandle, int useMultiBody)
|
int b3LoadUrdfCommandSetUseMultiBody(b3SharedMemoryCommandHandle commandHandle, int useMultiBody)
|
||||||
{
|
{
|
||||||
struct SharedMemoryCommand* command = (struct SharedMemoryCommand*) commandHandle;
|
struct SharedMemoryCommand* command = (struct SharedMemoryCommand*) commandHandle;
|
||||||
|
|||||||
@@ -233,6 +233,9 @@ void b3ApplyExternalForce(b3SharedMemoryCommandHandle commandHandle, int bodyUni
|
|||||||
void b3ApplyExternalTorque(b3SharedMemoryCommandHandle commandHandle, int bodyUniqueId, int linkId, const double torque[3], int flags);
|
void b3ApplyExternalTorque(b3SharedMemoryCommandHandle commandHandle, int bodyUniqueId, int linkId, const double torque[3], int flags);
|
||||||
|
|
||||||
b3SharedMemoryCommandHandle b3LoadBunnyCommandInit(b3PhysicsClientHandle physClient);
|
b3SharedMemoryCommandHandle b3LoadBunnyCommandInit(b3PhysicsClientHandle physClient);
|
||||||
|
int b3LoadBunnySetScale(b3SharedMemoryCommandHandle commandHandle, double scale);
|
||||||
|
int b3LoadBunnySetMass(b3SharedMemoryCommandHandle commandHandle, double mass);
|
||||||
|
int b3LoadBunnySetCollisionMargin(b3SharedMemoryCommandHandle commandHandle, double collisionMargin);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1636,6 +1636,21 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
case CMD_LOAD_BUNNY:
|
case CMD_LOAD_BUNNY:
|
||||||
{
|
{
|
||||||
#ifdef USE_SOFT_BODY_MULTI_BODY_DYNAMICS_WORLD
|
#ifdef USE_SOFT_BODY_MULTI_BODY_DYNAMICS_WORLD
|
||||||
|
double scale = 0.1;
|
||||||
|
double mass = 0.1;
|
||||||
|
double collisionMargin = 0.02;
|
||||||
|
if (clientCmd.m_updateFlags & LOAD_BUNNY_UPDATE_SCALE)
|
||||||
|
{
|
||||||
|
scale = clientCmd.m_loadBunnyArguments.m_scale;
|
||||||
|
}
|
||||||
|
if (clientCmd.m_updateFlags & LOAD_BUNNY_UPDATE_MASS)
|
||||||
|
{
|
||||||
|
mass = clientCmd.m_loadBunnyArguments.m_mass;
|
||||||
|
}
|
||||||
|
if (clientCmd.m_updateFlags & LOAD_BUNNY_UPDATE_COLLISION_MARGIN)
|
||||||
|
{
|
||||||
|
collisionMargin = clientCmd.m_loadBunnyArguments.m_collisionMargin;
|
||||||
|
}
|
||||||
m_data->m_softBodyWorldInfo.air_density = (btScalar)1.2;
|
m_data->m_softBodyWorldInfo.air_density = (btScalar)1.2;
|
||||||
m_data->m_softBodyWorldInfo.water_density = 0;
|
m_data->m_softBodyWorldInfo.water_density = 0;
|
||||||
m_data->m_softBodyWorldInfo.water_offset = 0;
|
m_data->m_softBodyWorldInfo.water_offset = 0;
|
||||||
@@ -1650,14 +1665,14 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
pm->m_kLST = 1.0;
|
pm->m_kLST = 1.0;
|
||||||
pm->m_flags -= btSoftBody::fMaterial::DebugDraw;
|
pm->m_flags -= btSoftBody::fMaterial::DebugDraw;
|
||||||
psb->generateBendingConstraints(2,pm);
|
psb->generateBendingConstraints(2,pm);
|
||||||
psb->m_cfg.piterations = 2;
|
psb->m_cfg.piterations = 50;
|
||||||
psb->m_cfg.kDF = 0.5;
|
psb->m_cfg.kDF = 0.5;
|
||||||
psb->randomizeConstraints();
|
psb->randomizeConstraints();
|
||||||
psb->rotate(btQuaternion(0.70711,0,0,0.70711));
|
psb->rotate(btQuaternion(0.70711,0,0,0.70711));
|
||||||
psb->translate(btVector3(0,0,3.0));
|
psb->translate(btVector3(0,0,1.0));
|
||||||
psb->scale(btVector3(0.1,0.1,0.1));
|
psb->scale(btVector3(scale,scale,scale));
|
||||||
psb->setTotalMass(1,true);
|
psb->setTotalMass(mass,true);
|
||||||
psb->getCollisionShape()->setMargin(0.01);
|
psb->getCollisionShape()->setMargin(collisionMargin);
|
||||||
|
|
||||||
m_data->m_dynamicsWorld->addSoftBody(psb);
|
m_data->m_dynamicsWorld->addSoftBody(psb);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -254,6 +254,13 @@ enum EnumSimParamUpdateFlags
|
|||||||
SIM_PARAM_UPDATE_INTERNAL_SIMULATION_FLAGS=64
|
SIM_PARAM_UPDATE_INTERNAL_SIMULATION_FLAGS=64
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum EnumLoadBunnyUpdateFlags
|
||||||
|
{
|
||||||
|
LOAD_BUNNY_UPDATE_SCALE=1,
|
||||||
|
LOAD_BUNNY_UPDATE_MASS=2,
|
||||||
|
LOAD_BUNNY_UPDATE_COLLISION_MARGIN=4
|
||||||
|
};
|
||||||
|
|
||||||
enum EnumSimParamInternalSimFlags
|
enum EnumSimParamInternalSimFlags
|
||||||
{
|
{
|
||||||
SIM_PARAM_INTERNAL_CREATE_ROBOT_ASSETS=1,
|
SIM_PARAM_INTERNAL_CREATE_ROBOT_ASSETS=1,
|
||||||
@@ -273,6 +280,13 @@ struct SendPhysicsSimulationParameters
|
|||||||
double m_defaultContactERP;
|
double m_defaultContactERP;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct LoadBunnyArgs
|
||||||
|
{
|
||||||
|
double m_scale;
|
||||||
|
double m_mass;
|
||||||
|
double m_collisionMargin;
|
||||||
|
};
|
||||||
|
|
||||||
struct RequestActualStateArgs
|
struct RequestActualStateArgs
|
||||||
{
|
{
|
||||||
int m_bodyUniqueId;
|
int m_bodyUniqueId;
|
||||||
@@ -500,6 +514,7 @@ struct SharedMemoryCommand
|
|||||||
struct UpdateVisualShapeDataArgs m_updateVisualShapeDataArguments;
|
struct UpdateVisualShapeDataArgs m_updateVisualShapeDataArguments;
|
||||||
struct LoadTextureArgs m_loadTextureArguments;
|
struct LoadTextureArgs m_loadTextureArguments;
|
||||||
struct CalculateInverseKinematicsArgs m_calculateInverseKinematicsArguments;
|
struct CalculateInverseKinematicsArgs m_calculateInverseKinematicsArguments;
|
||||||
|
struct LoadBunnyArgs m_loadBunnyArguments;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ subject to the following restrictions:
|
|||||||
#include "BulletSoftBody/btSoftBodySolvers.h"
|
#include "BulletSoftBody/btSoftBodySolvers.h"
|
||||||
#include "btSoftBodyData.h"
|
#include "btSoftBodyData.h"
|
||||||
#include "LinearMath/btSerializer.h"
|
#include "LinearMath/btSerializer.h"
|
||||||
|
#include "BulletDynamics/Featherstone/btMultiBodyLinkCollider.h"
|
||||||
|
#include "BulletDynamics/Featherstone/btMultiBodyConstraint.h"
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -3018,6 +3020,7 @@ void btSoftBody::PSolve_Anchors(btSoftBody* psb,btScalar kst,btScalar ti)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
void btSoftBody::PSolve_RContacts(btSoftBody* psb, btScalar kst, btScalar ti)
|
void btSoftBody::PSolve_RContacts(btSoftBody* psb, btScalar kst, btScalar ti)
|
||||||
{
|
{
|
||||||
@@ -3029,8 +3032,38 @@ void btSoftBody::PSolve_RContacts(btSoftBody* psb, btScalar kst, btScalar ti)
|
|||||||
const sCti& cti = c.m_cti;
|
const sCti& cti = c.m_cti;
|
||||||
if (cti.m_colObj->hasContactResponse())
|
if (cti.m_colObj->hasContactResponse())
|
||||||
{
|
{
|
||||||
btRigidBody* tmpRigid = (btRigidBody*)btRigidBody::upcast(cti.m_colObj);
|
btVector3 va(0,0,0);
|
||||||
const btVector3 va = tmpRigid ? tmpRigid->getVelocityInLocalPoint(c.m_c1)*dt : btVector3(0,0,0);
|
btRigidBody* rigidCol;
|
||||||
|
btMultiBodyLinkCollider* multibodyLinkCol;
|
||||||
|
btScalar* deltaV;
|
||||||
|
btMultiBodyJacobianData jacobianData;
|
||||||
|
if (cti.m_colObj->getInternalType() == btCollisionObject::CO_RIGID_BODY)
|
||||||
|
{
|
||||||
|
rigidCol = (btRigidBody*)btRigidBody::upcast(cti.m_colObj);
|
||||||
|
va = rigidCol ? rigidCol->getVelocityInLocalPoint(c.m_c1)*dt : btVector3(0,0,0);
|
||||||
|
}
|
||||||
|
else if (cti.m_colObj->getInternalType() == btCollisionObject::CO_FEATHERSTONE_LINK)
|
||||||
|
{
|
||||||
|
multibodyLinkCol = (btMultiBodyLinkCollider*)btMultiBodyLinkCollider::upcast(cti.m_colObj);
|
||||||
|
if (multibodyLinkCol)
|
||||||
|
{
|
||||||
|
const int ndof = multibodyLinkCol->m_multiBody->getNumDofs() + 6;
|
||||||
|
jacobianData.m_jacobians.resize(ndof);
|
||||||
|
jacobianData.m_deltaVelocitiesUnitImpulse.resize(ndof);
|
||||||
|
btScalar* jac=&jacobianData.m_jacobians[0];
|
||||||
|
|
||||||
|
multibodyLinkCol->m_multiBody->fillContactJacobianMultiDof(multibodyLinkCol->m_link, c.m_node->m_x, cti.m_normal, jac, jacobianData.scratch_r, jacobianData.scratch_v, jacobianData.scratch_m);
|
||||||
|
deltaV = &jacobianData.m_deltaVelocitiesUnitImpulse[0];
|
||||||
|
multibodyLinkCol->m_multiBody->calcAccelerationDeltasMultiDof(&jacobianData.m_jacobians[0],deltaV,jacobianData.scratch_r, jacobianData.scratch_v);
|
||||||
|
|
||||||
|
btScalar vel = 0.0;
|
||||||
|
for (int j = 0; j < ndof ; ++j) {
|
||||||
|
vel += multibodyLinkCol->m_multiBody->getVelocityVector()[j] * jac[j];
|
||||||
|
}
|
||||||
|
va = cti.m_normal*vel*dt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const btVector3 vb = c.m_node->m_x-c.m_node->m_q;
|
const btVector3 vb = c.m_node->m_x-c.m_node->m_q;
|
||||||
const btVector3 vr = vb-va;
|
const btVector3 vr = vb-va;
|
||||||
const btScalar dn = btDot(vr, cti.m_normal);
|
const btScalar dn = btDot(vr, cti.m_normal);
|
||||||
@@ -3041,8 +3074,20 @@ void btSoftBody::PSolve_RContacts(btSoftBody* psb, btScalar kst, btScalar ti)
|
|||||||
// c0 is the impulse matrix, c3 is 1 - the friction coefficient or 0, c4 is the contact hardness coefficient
|
// c0 is the impulse matrix, c3 is 1 - the friction coefficient or 0, c4 is the contact hardness coefficient
|
||||||
const btVector3 impulse = c.m_c0 * ( (vr - (fv * c.m_c3) + (cti.m_normal * (dp * c.m_c4))) * kst );
|
const btVector3 impulse = c.m_c0 * ( (vr - (fv * c.m_c3) + (cti.m_normal * (dp * c.m_c4))) * kst );
|
||||||
c.m_node->m_x -= impulse * c.m_c2;
|
c.m_node->m_x -= impulse * c.m_c2;
|
||||||
if (tmpRigid)
|
|
||||||
tmpRigid->applyImpulse(impulse,c.m_c1);
|
if (cti.m_colObj->getInternalType() == btCollisionObject::CO_RIGID_BODY)
|
||||||
|
{
|
||||||
|
if (rigidCol)
|
||||||
|
rigidCol->applyImpulse(impulse,c.m_c1);
|
||||||
|
}
|
||||||
|
else if (cti.m_colObj->getInternalType() == btCollisionObject::CO_FEATHERSTONE_LINK)
|
||||||
|
{
|
||||||
|
if (multibodyLinkCol)
|
||||||
|
{
|
||||||
|
double multiplier = 0.5;
|
||||||
|
multibodyLinkCol->m_multiBody->applyDeltaVeeMultiDof(deltaV,-impulse.length()*multiplier);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user