Merge remote-tracking branch 'bp/master'
This commit is contained in:
203
data/quadruped/minitaur_single_motor.urdf
Normal file
203
data/quadruped/minitaur_single_motor.urdf
Normal file
@@ -0,0 +1,203 @@
|
|||||||
|
<?xml version="0.0" ?>
|
||||||
|
<!-- ======================================================================= -->
|
||||||
|
<!--LICENSE: -->
|
||||||
|
<!--Copyright (c) 2017, Erwin Coumans -->
|
||||||
|
<!--Google Inc. -->
|
||||||
|
<!--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 or derived work must retain this 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="quadruped">
|
||||||
|
<link name="base_chassis_link">
|
||||||
|
<visual>
|
||||||
|
<geometry>
|
||||||
|
<box size=".33 0.10 .07"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="black">
|
||||||
|
<color rgba="0.3 0.3 0.3 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0.10 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size=".17 0.10 .05"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="black">
|
||||||
|
<color rgba="0.3 0.3 0.3 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 -0.10 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size=".17 0.10 .05"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="black">
|
||||||
|
<color rgba="0.3 0.3 0.3 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
|
||||||
|
<collision>
|
||||||
|
<geometry>
|
||||||
|
<box size=".33 0.10 .07"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0.10 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size=".17 0.10 .05"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 -0.10 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size=".17 0.10 .05"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
|
||||||
|
<inertial>
|
||||||
|
<mass value="3"/>
|
||||||
|
<inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
|
||||||
|
<link name="chassis_right">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0.035 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size=".34 0.01 .04"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="grey">
|
||||||
|
<color rgba="0.65 0.65 0.75 1"/>
|
||||||
|
</material> </visual>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 -0.035 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size=".34 0.01 .04"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="grey">
|
||||||
|
<color rgba="0.65 0.65 0.75 1"/>
|
||||||
|
</material> </visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0.035 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size=".34 0.01 .04"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 -0.035 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size=".34 0.01 .04"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<mass value=".1"/>
|
||||||
|
<inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
|
||||||
|
<joint name="chassis_right_center" type="fixed">
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<parent link="base_chassis_link"/>
|
||||||
|
<child link="chassis_right"/>
|
||||||
|
<origin rpy="-0.0872665 0 0" xyz="0.0 -0.10 0.0"/>
|
||||||
|
<limit effort="100" velocity="100"/>
|
||||||
|
<joint_properties damping="0.0" friction="0.0"/>
|
||||||
|
</joint>
|
||||||
|
|
||||||
|
<link name="chassis_left">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0.035 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size=".34 0.01 .04"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="grey">
|
||||||
|
<color rgba="0.65 0.65 0.75 1"/>
|
||||||
|
</material> </visual>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 -0.035 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size=".34 0.01 .04"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="grey">
|
||||||
|
<color rgba="0.65 0.65 0.75 1"/>
|
||||||
|
</material> </visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0.035 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size=".34 0.01 .04"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 -0.035 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size=".34 0.01 .04"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<mass value=".1"/>
|
||||||
|
<inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
|
||||||
|
<joint name="chassis_left_center" type="fixed">
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<parent link="base_chassis_link"/>
|
||||||
|
<child link="chassis_left"/>
|
||||||
|
<origin rpy="0.0872665 0 0" xyz="0.0 0.10 0.0"/>
|
||||||
|
<limit effort="100" velocity="100"/>
|
||||||
|
<joint_properties damping="0.0" friction="0.0"/>
|
||||||
|
</joint>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link name="motor_front_rightR_link">
|
||||||
|
<visual>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="tmotor3.obj" scale="1 1 1"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="white">
|
||||||
|
<color rgba="1 1 1 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<geometry>
|
||||||
|
<cylinder length="0.026" radius="0.0434"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<mass value="0.25"/>
|
||||||
|
<inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
<joint name="motor_front_rightR_joint" type="continuous">
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<parent link="chassis_right"/>
|
||||||
|
<child link="motor_front_rightR_link"/>
|
||||||
|
<origin rpy="1.57075 0 0" xyz="0.21 -0.025 0"/>
|
||||||
|
<limit effort="100" velocity="100"/>
|
||||||
|
<joint_properties damping="0.0" friction="0.0"/>
|
||||||
|
</joint>
|
||||||
|
|
||||||
|
</robot>
|
||||||
|
|
||||||
@@ -69,8 +69,6 @@ void btStaticPlaneShape::processAllTriangles(btTriangleCallback* callback,const
|
|||||||
//tangentDir0/tangentDir1 can be precalculated
|
//tangentDir0/tangentDir1 can be precalculated
|
||||||
btPlaneSpace1(m_planeNormal,tangentDir0,tangentDir1);
|
btPlaneSpace1(m_planeNormal,tangentDir0,tangentDir1);
|
||||||
|
|
||||||
btVector3 supVertex0,supVertex1;
|
|
||||||
|
|
||||||
btVector3 projectedCenter = center - (m_planeNormal.dot(center) - m_planeConstant)*m_planeNormal;
|
btVector3 projectedCenter = center - (m_planeNormal.dot(center) - m_planeConstant)*m_planeNormal;
|
||||||
|
|
||||||
btVector3 triangle[3];
|
btVector3 triangle[3];
|
||||||
|
|||||||
@@ -113,12 +113,7 @@ bool btContinuousConvexCollision::calcTimeOfImpact(
|
|||||||
if ((relLinVelocLength+maxAngularProjectedVelocity) == 0.f)
|
if ((relLinVelocLength+maxAngularProjectedVelocity) == 0.f)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
btScalar lambda = btScalar(0.);
|
btScalar lambda = btScalar(0.);
|
||||||
btVector3 v(1,0,0);
|
|
||||||
|
|
||||||
int maxIter = MAX_ITERATIONS;
|
|
||||||
|
|
||||||
btVector3 n;
|
btVector3 n;
|
||||||
n.setValue(btScalar(0.),btScalar(0.),btScalar(0.));
|
n.setValue(btScalar(0.),btScalar(0.),btScalar(0.));
|
||||||
@@ -137,8 +132,7 @@ bool btContinuousConvexCollision::calcTimeOfImpact(
|
|||||||
|
|
||||||
btPointCollector pointCollector1;
|
btPointCollector pointCollector1;
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
||||||
computeClosestPoints(fromA,fromB,pointCollector1);
|
computeClosestPoints(fromA,fromB,pointCollector1);
|
||||||
|
|
||||||
hasResult = pointCollector1.m_hasResult;
|
hasResult = pointCollector1.m_hasResult;
|
||||||
@@ -172,28 +166,20 @@ bool btContinuousConvexCollision::calcTimeOfImpact(
|
|||||||
|
|
||||||
dLambda = dist / (projectedLinearVelocity+ maxAngularProjectedVelocity);
|
dLambda = dist / (projectedLinearVelocity+ maxAngularProjectedVelocity);
|
||||||
|
|
||||||
|
lambda += dLambda;
|
||||||
|
|
||||||
lambda = lambda + dLambda;
|
|
||||||
|
|
||||||
if (lambda > btScalar(1.))
|
if (lambda > btScalar(1.) || lambda < btScalar(0.))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (lambda < btScalar(0.))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
|
|
||||||
//todo: next check with relative epsilon
|
//todo: next check with relative epsilon
|
||||||
if (lambda <= lastLambda)
|
if (lambda <= lastLambda)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
//n.setValue(0,0,0);
|
//n.setValue(0,0,0);
|
||||||
break;
|
//break;
|
||||||
}
|
}
|
||||||
lastLambda = lambda;
|
lastLambda = lambda;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//interpolate to next lambda
|
//interpolate to next lambda
|
||||||
btTransform interpolatedTransA,interpolatedTransB,relativeTrans;
|
btTransform interpolatedTransA,interpolatedTransB,relativeTrans;
|
||||||
|
|
||||||
@@ -223,7 +209,7 @@ bool btContinuousConvexCollision::calcTimeOfImpact(
|
|||||||
}
|
}
|
||||||
|
|
||||||
numIter++;
|
numIter++;
|
||||||
if (numIter > maxIter)
|
if (numIter > MAX_ITERATIONS)
|
||||||
{
|
{
|
||||||
result.reportFailure(-2, numIter);
|
result.reportFailure(-2, numIter);
|
||||||
return false;
|
return false;
|
||||||
@@ -237,6 +223,5 @@ bool btContinuousConvexCollision::calcTimeOfImpact(
|
|||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ class btStaticPlaneShape;
|
|||||||
|
|
||||||
/// btContinuousConvexCollision implements angular and linear time of impact for convex objects.
|
/// btContinuousConvexCollision implements angular and linear time of impact for convex objects.
|
||||||
/// Based on Brian Mirtich's Conservative Advancement idea (PhD thesis).
|
/// Based on Brian Mirtich's Conservative Advancement idea (PhD thesis).
|
||||||
/// Algorithm operates in worldspace, in order to keep inbetween motion globally consistent.
|
/// Algorithm operates in worldspace, in order to keep in between motion globally consistent.
|
||||||
/// It uses GJK at the moment. Future improvement would use minkowski sum / supporting vertex, merging innerloops
|
/// It uses GJK at the moment. Future improvement would use minkowski sum / supporting vertex, merging innerloops
|
||||||
class btContinuousConvexCollision : public btConvexCast
|
class btContinuousConvexCollision : public btConvexCast
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user