fix very rare threading issue, let main thread compute the UID for user debug items

add collision model to cartpole.urdf
This commit is contained in:
erwincoumans
2017-10-09 22:40:53 -07:00
parent 6b4f69f733
commit e5d4c73c40
2 changed files with 16 additions and 5 deletions

View File

@@ -62,6 +62,12 @@
<mass value="10"/>
<inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
</inertial>
<collision>
<geometry>
<box size="0.05 0.05 1.0"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0.5"/>
</collision>
</link>
<joint name="cart_to_pole" type="continuous">

View File

@@ -1131,7 +1131,7 @@ public:
btAlignedObjectArray<UserDebugText> m_userDebugText;
UserDebugText m_tmpText;
int m_resultUserDebugTextUid;
virtual int addUserDebugText3D( const char* txt, const double positionXYZ[3], const double orientation[4], const double textColorRGB[3], double size, double lifeTime, int trackingVisualShapeIndex, int optionFlags)
{
@@ -1165,7 +1165,7 @@ public:
m_cs->setSharedParam(1, eGUIUserDebugAddText);
workerThreadWait();
return m_userDebugText[m_userDebugText.size()-1].m_itemUniqueId;
return m_resultUserDebugTextUid;
}
btAlignedObjectArray<UserDebugParameter*> m_userDebugParams;
@@ -1183,6 +1183,7 @@ public:
}
return 0;
}
int m_userDebugParamUid;
virtual int addUserDebugParameter(const char* txt, double rangeMin, double rangeMax, double startValue)
{
@@ -1196,13 +1197,13 @@ public:
m_cs->setSharedParam(1, eGUIUserDebugAddParameter);
workerThreadWait();
return (*m_userDebugParams[m_userDebugParams.size()-1]).m_itemUniqueId;
return m_userDebugParamUid;
}
btAlignedObjectArray<UserDebugDrawLine> m_userDebugLines;
UserDebugDrawLine m_tmpLine;
int m_resultDebugLineUid;
virtual int addUserDebugLine(const double debugLineFromXYZ[3], const double debugLineToXYZ[3], const double debugLineColorRGB[3], double lineWidth, double lifeTime , int trackingVisualShapeIndex)
{
m_tmpLine.m_lifeTime = lifeTime;
@@ -1223,7 +1224,7 @@ public:
m_cs->lock();
m_cs->setSharedParam(1, eGUIUserDebugAddLine);
workerThreadWait();
return m_userDebugLines[m_userDebugLines.size()-1].m_itemUniqueId;
return m_resultDebugLineUid;
}
int m_removeDebugItemUid;
@@ -2171,6 +2172,7 @@ void PhysicsServerExample::updateGraphics()
B3_PROFILE("eGUIUserDebugAddText");
m_multiThreadedHelper->m_userDebugText.push_back(m_multiThreadedHelper->m_tmpText);
m_multiThreadedHelper->m_resultUserDebugTextUid = m_multiThreadedHelper->m_userDebugText[m_multiThreadedHelper->m_userDebugText.size()-1].m_itemUniqueId;
m_multiThreadedHelper->mainThreadRelease();
break;
}
@@ -2190,6 +2192,8 @@ void PhysicsServerExample::updateGraphics()
m_multiThreadedHelper->m_childGuiHelper->getParameterInterface()->registerSliderFloatParameter(slider);
}
m_multiThreadedHelper->m_userDebugParamUid = (*m_multiThreadedHelper->m_userDebugParams[m_multiThreadedHelper->m_userDebugParams.size()-1]).m_itemUniqueId;
//also add actual menu
m_multiThreadedHelper->mainThreadRelease();
break;
@@ -2199,6 +2203,7 @@ void PhysicsServerExample::updateGraphics()
B3_PROFILE("eGUIUserDebugAddLine");
m_multiThreadedHelper->m_userDebugLines.push_back(m_multiThreadedHelper->m_tmpLine);
m_multiThreadedHelper->m_resultDebugLineUid = m_multiThreadedHelper->m_userDebugLines[m_multiThreadedHelper->m_userDebugLines.size()-1].m_itemUniqueId;
m_multiThreadedHelper->mainThreadRelease();
break;
}